我有一个雄辩的模型Foo
,其中有一个字段bar_id
。我在Foo
模型中定义了它们之间的关系:
public function Bar()
{
$this->belongsTo('App\Bar');
}
Bar
模型有一个baz_id
,并且有一个范围来获取所有具有特定Bar
的{{1}}。这是我的baz_id
模型中的范围:
Bar
我现在要呼叫所有public function scopeFromBaz($query, $bazId)
{
return $query->where('baz_id', $bazId)
}
,它们关联的Foo
的{{1}}为Bar
。我该怎么做呢?我尝试过:
baz_id
但是会产生错误
调用未定义的方法Illuminate \ Database \ Query \ Builder :: fromBaz()
答案 0 :(得分:1)
在向关系中添加条件时,必须使用whereHas。
查询应为
Foo::whereHas('Bar', function ($query) {
$query->fromBaz(1);
})->get();
请参阅:https://laravel.com/docs/5.6/eloquent-relationships#querying-relationship-existence
我还在您的其他代码段上发现了一些东西,您尚未在Foo模型中的Bar函数上添加收益。