我有5个数据库行,它们具有相同的client_id
,其中3个标记为completed, Yes
。
此代码按预期完成了3个结果:
$indGoal = $client->indGoal()->where('completed','=','Yes')->get();
此代码没有任何结果:我希望是2。
$indGoal = $client->indGoal()->where('completed','!=','Yes')->get();
This question建议添加->orWhereNull('completed')
-可以,但忽略client_id
关系。该请求会带来所有非Yes
的结果,而不考虑$client
我的客户模型供参考:
public function indGoal()
{
return $this->hasMany('App\Models\IndGoal');
}
答案 0 :(得分:1)
您应在回调中将orWhere
个过滤器分组,以免干扰现有过滤器。
$indGoal = $client->indGoal()
->where(function ($query) {
$query->orWhere('completed', '!=', 'yes')
->orWhereNull('completed');
})
->get();
通过这种方式,查询构建器知道任何分组条件都应该为真,而所有其他条件都是独立的。