小ネタです。
つうか、タイトルそのまんま。
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;
これ、常識だったかな?