小ネタです。
つうか、タイトルそのまんま。
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;
ここで、さらにMember
のstatus
がactive
なものだけに絞り込みたいとします。
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;
これ、常識だったかな?