Laravelでユーザーのお気に入りテーブルから商品情報とそのリレーションを貼った情報を表示する方法がわかりません。
以下のコードで取得しています
$products = $user->favorites()->with('product')->get();
これをお気に入りの取得と
取得したお気に入りの結果から商品情報を取得
の2つに分けたいです。
やってみたこととして
お気に入りの取得 $favorites = Favorite::where('user_id', $user->id)->get(); 結果から商品を取得 $products = Product::where('product_id', $favorites)->get(); や $products = Product::where('product_id', $favorites->product_id)->get();
としていますが、うまく商品を取得出来ていません
2つに分けて取得するにはどうすればよいのでしょうか?
===ここから下は質問をシンプルにする前の質問ですので読み飛ばしてください===
やってみたことは
$products = $user->favorites()->with('product')->get();
//お気に入りとその商品情報を取得 $products = $user->favorites()->with('product')->get();
これでユーザーの登録しているお気に入りの商品情報が取得できています
ですが、商品にはリレーションでコメントや画像、その他のものが貼ってあります
なので、
ユーザーのお気に入り情報を取得し、
そのお気に入りのproduct_idを使って商品テーブルから検索したいのですが、うまくいきません。
通常、
$product = Product::findOrFail($product_id);
のようにして取得しますが、
お気に入りテーブル(favorites)のproduct_idの該当するすべてを取得するために
$favorites = $user->favorites()->get(); $products = Product::where('id', $favorites)->get();
としても中身は空です。
$products = Product::where('id', $favorites->product_id)->get();
とした場合は
Property [product_id] does not exist on this collection instance.
というエラーが出ます
コレクションであったり、何を返しているのかがよくわかっていない面もありますので
どうしたらよいのでしょうか?
よろしくお願い致します
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。