Laravel多关联条件查询:如何筛选无在职子女的Dad模型?
解决方案
要筛选出既没有在职儿子也没有在职女儿的Dad模型,你可以用Laravel的whereDoesntHave方法——它的作用是排除存在满足指定条件关联记录的父模型。我们需要同时对sons和daughters两个关联做判断,确保两者都不存在在职的子女:
use Illuminate\Database\Eloquent\Builder; $dads = \App\Models\Dad::whereDoesntHave('sons', function (Builder $query) { $query->where('employed', 1); })->whereDoesntHave('daughters', function (Builder $query) { $query->where('employed', 1); })->get();
代码说明:
whereDoesntHave('sons', ...):筛选出没有任何在职儿子的父亲- 链式调用第二个
whereDoesntHave('daughters', ...):在上述结果基础上,进一步筛选出也没有任何在职女儿的父亲 - 两个条件是逻辑“与”的关系,最终得到的就是完全没有在职子女的
Dad集合
内容的提问来源于stack exchange,提问作者Zhiyong Li
相关产品推荐
相关产品推荐

