Laravel where DoesntHave()-多个OR条件 [英] Laravel whereDoesntHave() - multiple OR conditions

查看:17
本文介绍了Laravel where DoesntHave()-多个OR条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Laravel 4.2中,我有一个名为Product的模型,它与其他模型(如Country或Category)具有多对多关系。我想过滤掉不完整的产品,这意味着它们没有关联的国家或关联的类别。我可以使用whereDoesntHave()方法筛选出一个关系。当我在一个查询中使用它两次时,它会创建AND条件,但我需要OR。在API文档中找不到orWhereDoesntHave()方法。我不能将多个关系作为参数传递,因为它要求第一个参数是字符串。

我需要这样的东西: $products = Product::whereDoesntHave('categories')->orWhereDoesntHave('countries')->get();

有没有办法满足whereDoesntHave()多个OR条件?

推荐答案

可以使用doesntHave并指定布尔运算符:

$products = Product::doesntHave('categories')->doesntHave('countries', 'or')->get();
实际上,如果您想在检查相关模型是否存在之前传入一个闭包来过滤它们,您只需要whereDoesntHave。如果您想这样做,可以将闭包作为第三个参数传递:

$products = Product::doesntHave('categories', 'or', function($q){
    $q->where('active', false);
})->doesntHave('countries', 'or')->get();

这篇关于Laravel where DoesntHave()-多个OR条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆