首页 > 解决方案 > laravel eloquent 如何使用多个“和”进行查询?

问题描述

我有这个查询:

SELECT * 
FROM `groups` 
WHERE `status` = 1 
    AND `active` != 1 
    AND (`approved` != 1 OR `approved` IS NULL)

我在查询生成器中尝试了这个,但不知道如何正确地做到这一点

这是我的查询生成器:

Group::where([['status', '=', 1], ['active', '!=', 1]])
    ->where([['approved', '!=', 1]])
    ->orWhereNull()
    ->get();

标签: phplaraveleloquent

解决方案


您应该使用 where 和 Closure 来对参数进行分组。https://laravel.com/docs/5.7/queries#parameter-grouping

$data = Group::where(function($query){
        $query
            ->where('approved', '!=', 1)
            ->orWhereNull('approved');
    })
    ->where('status', 1)
    ->where('active', '!=', 1)
    ->get();

推荐阅读