categories
テーブルとテーブルから名前の列を取得しようとしていbrands
ます。brand_user
テーブルには、間のブリッジ/ピボットテーブルであるbrands
とusers
私は、ユーザーのIDに基づいて、ブランドを引くことができます。
問題は、私の出力categories
では結果に名前の列しか表示されず、brands
名前が省略されていることです。左結合と右結合を実行しようとしましたが、問題は解決しません。brands
名前列brand_name
とカテゴリ名列を呼び出す必要はないようですcategory_name
が、現時点では、これが私が考えることができる唯一の解決策ですが、可能であれば(そしてそうしないことが理にかなっている場合は)そうはなりません。
だから私の質問は、名前列を各テーブルに一意にする必要がありますか、それともそれを使用するname
テーブルの一般的な名前列として使用できますか?
return DB::table('brands')
->join('categories', 'categories.id', '=', 'brands.category_id')
->join('brand_user', 'brand_user.brand_id', '=', 'brands.id')
->select('brands.name', 'categories.name')
->where('user_id', Auth::user()->id)
->get();
EloquentとLaravelの方法に興味があり、ブランドとユーザーの間に多対多の関係があり、ブランドとカテゴリの間に1対多の関係がある場合は、この方法でブランドとカテゴリを繰り返すことができます。
$brands = Brand::whereHas('users', function($query) {
$query->where('users.id', auth()->id());
})
->with('category')
->get();
foreach($brands as $brand) {
echo $brand->name .' ' .$brand->category->name;
}
Eloquentの関係の詳細については、https: //laravel.com/docs/8.x/eloquent-relationshipsをご覧ください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加