Laravel Eloquent在关联模型上按作用域获取模型

时间:2018-06-26 11:46:53

标签: php laravel eloquent

我有一个雄辩的模型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()

1 个答案:

答案 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函数上添加收益。