初心者です。
ユーザーがいいねした投稿を全て取得する、ということをやりたいのですがうまくいきません。
$myfavs = Skiday::where('id', $fav_ski->skiday_id)->get(); いいねした投稿が複数あっても1つしか取得してこない $myfavs = Skiday::find($fav_ski->skiday_id)->get(); いいねした投稿が1つでも複数取得してしまう
controller
1public function user_favs($user) 2 { 3 // ユーザー取得 4 $user = User::findOrFail($user); 5 // 取得したユーザーのイイねレコード全部取得 6 $likes_ski = $user->likes()->get(); 7 // 取得したレコードの数だけforeachで回す 8 foreach($likes_ski as $fav_ski){ 9 // イイねレコードにあるskiday_idを使ってイイねしたskidayを取得 10 $myfavs = Skiday::where('id', $fav_ski->skiday_id)->get(); 11 // $myfavs = Skiday::find($fav_ski->skiday_id)->get(); 12 } 13 if(isset($myfavs)){ 14 return view('users.favs')->with('myfavs', $myfavs); 15 }else{ 16 return view('users.favs'); 17 } 18 }
Like
1public function user() 2 { 3 return $this->belongsTo('App\User'); 4 } 5 6 public function skiday() 7 { 8 return $this->belongsTo('App\Skiday'); 9 }
user
1public function skidays() 2 { 3 return $this->hasMany('App\Skiday'); 4 } 5 6 public function likes() 7 { 8 return $this->hasMany('App\Like'); 9 }
skiday
1public function likes() 2 { 3 return $this->hasMany('App\Like'); 4 }
リレーション関係をうまく使えば他の書き方もあるのかなと思っています。
自分では良いコードが見つからず、困っています。
どなたか知恵を貸していただきたいです。
よろしくお願いします。
php7.4.2
laravel6.18
回答1件
あなたの回答
tips
プレビュー