如何在 Laravel eloquent 的“或”条件中应用“与”条件

Posted

技术标签:

【中文标题】如何在 Laravel eloquent 的“或”条件中应用“与”条件【英文标题】:How to apply 'And' condition inside an 'OR' condition in Laravel elequont 【发布时间】:2014-06-22 16:11:08 【问题描述】:

我的查询是这样的

SELECT * FROM activities WHERE (active=1 AND linked_project_id IN (2,3) AND GLOBAL=1 OR (linked_project_id=2  AND active=1))

但我不知道如何将 'linked_project_id=2 AND active=1' 放入 AND 与 Laravel。 这是我的代码-

$activities=  Activitie::where('active','=',1)->whereIn('linked_project_id',array(2,3))->where('global','=','1')->orWhere('linked_project_id','='2)->where('active','=',1)->get();

但这会产生类似

的结果
SELECT * FROM activities WHERE (active=1 AND linked_project_id IN (2,3) AND GLOBAL=1 OR (linked_project_id=2 ) AND active=1)

【问题讨论】:

能否举个例子 【参考方案1】:

使用Advanced Wheres。

Model::where(function ($query) 
    $query->where('a', '=', 1)
          ->orWhere('b', '=', 1);
)->where(function ($query) 
    $query->where('c', '=', 1)
          ->orWhere('d', '=', 1);
);

【讨论】:

以上是关于如何在 Laravel eloquent 的“或”条件中应用“与”条件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel eloquent 的“或”条件中应用“与”条件

如何使用 eloquent hasmanythrough 或 hasonethrough 在 laravel 中加入 3 个表

如何在 Laravel Eloquent Collection 的 each 方法中使用 break 或 continue?

如何在 Laravel Eloquent 查询(或使用查询生成器)中为表起别名?

如何在 Laravel 中使用 eloquent 执行多表选择

Laravel Eloquent:检测为空或计数