Laravel7 リレーションにパラメータを渡す方法

hasMany()で紐づくレコードを取得時、パラメータを渡してレコードを絞る方法。

こんなリレーションがあったとして

members             articles
    id -----┐        id
            |       genre_id
            └------- member_id

メンバーに紐づく記事(articles)を取得したい場合は、Memberモデルに以下を記述すれば取得出来る。

public function articles()
{
    $articles = $this->hasMany(Article::class)
        ->get();

    return $articles;
}

しかし、ジャンルIDを指定してメンバーに紐づく該当ジャンルの記事を取得したい場合は、ジャンルIDを渡して以下のようにすることで取得出来る。

public function articles($genre_id)
{
    $articles = $this->hasMany(Article::class)
        ->where('genre_id', '=', $genre_id)
        ->get();

    return $articles;
}

view側で以下のようにコールすればOK。

$articles = $member->articles($genre_id);

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です