我有这个查询:
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();
答案 0 :(得分:3)
您应该使用带有Closure的where对参数进行分组。 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();
答案 1 :(得分:0)
您可以尝试以下操作:
$articles = \App\Article::where('foo', 'bar')
->where('color', 'blue')
->orWhere('name', 'like', '%John%')
->whereIn('id', [1, 2, 3, 4, 5])
->get();
答案 2 :(得分:0)
尝试这个
Group::where('status', 1)
->where('active', '!=', 1)
->where(function($query){
$query->where('approved', '!=', 1)
->orWhereNull('approved')
})->get();
在laravel see中使用where闭包
答案 3 :(得分:0)
尝试
Group::where('status', 1)->where('active', '!=', 1)->where('approved', '!=', 1)
->orWhere('status', 1)->where('active', '!=', 1)->where('approved', NULL)
->get();
或
$x = Group::where(function($q){
$q->where('approved', '!=', 1)
->orWhereNull('approved')
})
->where('status', 1)->where('active', '!=', 1)
->get();