Как в 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();

Возможный дубликат Laravel 5.0 Query Builder - Где с несколькими параметрами

Walter Cejas 11.12.2018 15:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
254
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

$articles = \App\Article::where('foo', 'bar')
    ->where('color', 'blue')
    ->orWhere('name', 'like', '%John%')
    ->whereIn('id', [1, 2, 3, 4, 5])
    ->get();

Кажется, этого недостаточно, чтобы помочь автору. Если он уже дал вам пример кода, который у него есть, попробуйте поработать над ним и посмотрите, как вы могли бы его улучшить.

Domagoj 05.01.2019 01:35
Ответ принят как подходящий

Вы должны использовать 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();

Попробуй это

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

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

попробуй это

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

Другие вопросы по теме