Как в laravel eloquent сделать запрос с несколькими 'и'? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть этот запрос:

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();

Ответы [ 4 ]

0 голосов
/ 11 декабря 2018

попробуйте

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();
0 голосов
/ 11 декабря 2018

Вы должны использовать где с закрытием для группировки параметров.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();
0 голосов
/ 11 декабря 2018

попробуйте это

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

используйте где в закрытии в laravel см.

0 голосов
/ 11 декабря 2018

Вы можете попробовать что-то вроде:

$articles = \App\Article::where('foo', 'bar')
    ->where('color', 'blue')
    ->orWhere('name', 'like', '%John%')
    ->whereIn('id', [1, 2, 3, 4, 5])
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...