LoginSignup
24
16

More than 5 years have passed since last update.

EloquentのRelationshipメソッドには追加条件が設定できます

Posted at

小ネタです。
つうか、タイトルそのまんま。

Laravel(Lumen)のRelationship(hasOne(), hasMany()など)メソッドは、所詮はQueryBuilderなので更に条件が追加できます。

GroupクラスとMemberクラスが1:nの関係にあるとき、GroupインスタンスからMemberインスタンス(郡)を取ってくるときは、hasMany()メソッドを使いますよね。

class Group extends Model
{
    public function members()
    {
        return $this->hasMany(Member::class);
    }
}
$members = $group->members;

ここで、さらにMemberstatusactiveなものだけに絞り込みたいとします。
hasMany()where()を追加したメソッドを追加しましょう。

class Group extends Model
{
    public function members()
    {
        return $this->hasMany(Member::class);
    }

    // status が 'active' な Member だけを取得する。
    public function active_members()
    {
        return $this->hasMany(Member::class)->where('status', 'active');
    }
}

あとはこのメソッドをプロパティとして呼び出すだけです。

$members = $group->active_members;

これ、常識だったかな?

24
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
16