実現したいこと
Laravel 8.83.6
Laravel初学者です。質問内容にて稚拙な表現や内容が分かりにくい箇所が多々あるかと思います。
不足の情報等ありましたら指摘いただけますと幸いです。
フリマアプリを開発中です。
商品一覧画面から詳細画面を表示する際、商品情報を複数テーブルからIDが一致するデータを取得し表示しようと考えています。
発生している問題・分からないこと
複数テーブルを結合しIDからレコードを抽出する方法を調べ実装したところ、問題なく実装でき画面はエラーなく表示されるのですが、内容が表示されず空白になってしまいます。
該当のソースコード
Controller
1public function itemdata(Request $request) 2 { 3 $sort = $request->sort; 4 $order = $request->order; 5 6 $items = Item::select() 7 ->leftjoin('categories','categories.id','=','items.category_id') 8 ->where('item_id',$request->item_id) 9 ->get(); 10 11 $item = Item::select() 12 ->leftjoin('conditions','conditions.id','=','items.condition_id') 13 ->where('item_id',$request->item_id) 14 ->get(); 15 16 return view('detail', compact('item')); 17 } 18 19 public function detail($id) 20 { 21 $item = Item::find($id); 22 return view('detail', compact('item')); 23 }
View
1<p class="category__content">{{ $item->category }}</p> 2<p class="condition__content">{{ $item->condition }}</p>
Model
1class Item extends Model 2{ 3 use HasFactory; 4 5 protected $table = 'items'; 6 7 protected $primaryKey = 'id'; 8 9 10 public function categories() 11 { 12 return $this->belongsTo('App\Category'); 13 } 14 15 public function conditions() 16 { 17 return $this->belongsTo('App\Condition'); 18 } 19 20 public function findAllItems() 21 { 22 return Item::all(); 23 } 24 25} 26 27 28class Category extends Model 29{ 30 use HasFactory; 31 32 public function items() 33 { 34 return $this->hasMany('App\Item'); 35 } 36} 37 38 39class Condition extends Model 40{ 41 use HasFactory; 42 43 public function items() 44 { 45 return $this->hasMany('App\Item'); 46 } 47}
Migrations
1 public function up() 2 { 3 Schema::create('items', function (Blueprint $table) { 4 $table->id(); 5 $table->string('name'); 6 $table->integer('price'); 7 $table->string('brand'); 8 $table->string('description'); 9 $table->string('img_url'); 10 $table->foreignId('user_id')->constrained()->cascadeOnDelete(); 11 $table->foreignId('category_id')->constrained()->cascadeOnDelete(); 12 $table->foreignId('condition_id')->constrained()->cascadeOnDelete(); 13 $table->timestamp('created_at')->useCurrent()->nullable(); 14 $table->timestamp('updated_at')->useCurrent()->nullable(); 15 }); 16 } 17 18 19 public function up() 20 { 21 Schema::create('categories', function (Blueprint $table) { 22 $table->id(); 23 $table->string('category'); 24 $table->timestamp('created_at')->useCurrent()->nullable(); 25 $table->timestamp('updated_at')->useCurrent()->nullable(); 26 }); 27 } 28 29 30public function up() 31 { 32 Schema::create('conditions', function (Blueprint $table) { 33 $table->id(); 34 $table->string('condition'); 35 $table->timestamp('created_at')->useCurrent()->nullable(); 36 $table->timestamp('updated_at')->useCurrent()->nullable(); 37 }); 38 }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
https://qiita.com/philhiroki/items/06dd763417973d25653a
https://dad-union.com/php/1521
上記サイトを参考に実装しました。
他にも複数のサイトを調べ参考にした部分もあるため、上記サイトに記載のないコード等も記載しております。
複数の方法で何度も実装しましたが、結果はどれも同じでした。
そのため、マイグレーションファイルやシーダーファイルの不備かと考えましたが、見返してもおかしい箇所が見つかりません。
内容が分かりづらくて申し訳ありません、どなたかご教示いただけますと幸いです。
補足
特になし
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。