【发布时间】:2021-11-12 05:36:29
【问题描述】:
我有一个模型Survey,其列installer_id 与hasOne 相关,另一个模型Installation 与hasMany 另一个模型Assignment 相关。
我想编写一个查询来获取所有Survey,其中installer_id 不为空,并且如果存在Assignment,则检查所有分配(如果有status is != 2 即状态= 0 或1)返回调查.
我尝试了这个查询,但它没有捕获“如果存在分配,则检查状态”部分
$surveys = Survey::whereNotNull('installer_id')
->orWhereHas('installation',function ($query) {
return $query->whereHas('assignments',function ($q){
return $q->where('status','!=', 2 );
});
})->get();
我还尝试在模型中定义hasManyThrough 关系。
public function assignments()
{
return $this->hasManyThrough(Assignment::class,Installation::class);
}
然后使用这个查询
$schedulables = Survey::whereNotNull('installer_id')
->orWherehas('assignments',function ($query){
return $query->where('assignments.status','!=', 2 );
})->get()
如有任何建议和帮助,我们将不胜感激
【问题讨论】:
标签: laravel eloquent eloquent-relationship