お世話になっております。
現在、下記の点についてつまづいておりまして、
お知恵をご教示頂けますと幸いでございます。
Laravelも使い始めて間もない為、基本的な理解が抜けている
かもしれませんが、お力をお貸し頂けますと幸いです。
・やりたいこと(書籍レビューサイトの構築)
一覧画面ページにて、書籍のレビュー(review_table)と
レビューに紐づく該当書籍データ(書籍名等)を一覧表示させたい
・つまづいていること(データベース構造は下記に記載)
review_tableから順番にデータを表示することは出来ているのですが、
reviewに紐づく書籍ID(以下bookbase_id)を渡すことが出来ておらず、
Trying to get property of non-objecのエラーになってしまう
厳密には、review_table内に、bookbase_id列が「1」のみの
場合は表示が出来ているのですが、以下のような場合、
エラーに上記エラーになってしまいます。
review_id / bookbase_id / comment
1 / 1 / comment
2 / 2 / comment
3 / 3 / comment
・お力添えを頂きたいこと
勉強不足で申し訳ございません。
bookbase_selectモデルに、bookbase_id(2以降)を渡す為に、
どこを修正すると上手く動くのか分かりかねている為、
ご教示頂けますと幸いです。
宜しくお願い致します。
<データベースのテーブル構造>
<bookbase_table>※書籍に関するデータ bookbase_id(int)→これをキーとしてreview_tableと連携 bookbase_name(varchar)→書籍名 <review_table>※レビューに関するデータ review_id(int) bookbase_id<int>→これをキーとしてbookbase_tableと連携 comment<varchar>
<PostController.php>※コントローラー定義ファイル
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\review_select; class PostsController extends Controller { public function index() { $posts = \App\bookbase_select::all(); return view('layout',['posts' => $posts]); } public function ReviewContent() { //review一覧を取得 $reviews = \App\review_select::all(); return view('layout',['reviews' => $reviews]); } }
<review_select.php>レビュー取得の為のモデルファイル
<?php namespace App; use Illuminate\Database\Eloquent\Model; class review_select extends Model { //レビューテーブルからデータ取得 protected $table = 'review_table'; protected $primarykey = "review_id"; public function bookbase_select() { return $this -> belongsTo('App\bookbase_select','bookbase_id','bookbase_id'); } public function user_select() { return $this -> belongsTo('App\user_select','user_id','user_id'); } }
<bookbase_select.php>書籍データ取得の為のモデルファイル
<?php namespace App; use Illuminate\Database\Eloquent\Model; class bookbase_select extends Model { protected $table = 'bookbase_table'; protected $primaryKey = "bookbase_id"; public function bookbase_select() { return $this -> hasMany('App\review_select','bookbase_id','bookbase_id'); } public function image_select() { return $this -> belongsTo('App\image_select','bookbase_id','bookbase_id'); } }
<viewファイルの表示部分>
@foreach($reviews as $post) <div> <div> <div> <img src={{$post -> bookbase_select -> image_select -> path}}> </div> <div> <h2> {{$post -> bookbase_select -> bookbase_name}}</h2> <div> <div> <img src={{$post -> user_select -> image_select -> path}}> </div> <p> {{$post -> user_select -> user_name}} {{$post -> date}} </p> </div> <h3> {{$post -> review_id}}{{$post -> comment}} </h3> </div> </div> </div> @endforeach
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。