Lrravelの学習中、hasManyThroughを使う機会があったので備忘録としてここに残す。
使用例
例えばあるユーザーが書いた記事にされているブックマークを取得したい場合、関係性は以下になる。
User→Article→Bookmark
ここではそれぞれ、Userを始点、Articleを中継先、Bookmarkを取得先とし、以下の記述となる。
//Userモデル内
public function getBookmarked()
{
return $this->hasManyThrough(
'App\Models\Bookmark', //取得先
'App\Models\Article', //中継先
'author_id', //始点と中継先をつなぐ外部キー
'article_id', //中継先と取得先をつなぐ外部キー
'id', //始点の主キー(省略可)
'id' //中継先の主キー(省略可)
);
}
第5、第6引数は主キー名が'id'なら省略出来る。よってこれらの引数を入れるのは主キー名を変えている場合のみ。
初心者のため、内容に相違あればコメント下さい。