Измените SQL на Query Builder в Laravel

Это мой оператор SQL

SELECT `pams_users`.display_name,`pams_user_levels`.description FROM pams_users 
JOIN pams_developer ON `pams_users`.developer_id=`pams_developer`.id AND `pams_developer`.id=27 OR `pams_users`.`parent_dev`=27
JOIN pams_user_levels ON `pams_user_levels`.id=`pams_users`.user_level AND `pams_user_levels`.id=6
GROUP BY  `pams_users`.display_name   

Это мой конструктор запросов на основе SQL

 DB::table('pams_users')
        ->join('pams_developer','pams_developer.id','pams_users.developer_id')
        ->join('pams_user_levels','pams_user_levels.id','pams_users.user_level')
        ->where('pams_developer.id',27)
        ->orWhere('pams_users.parent_dev',27)
        ->where('pams_user_levels.id',6)
        ->select('developer_name','description','display_name')
        ->selectRaw('count(pams_users.id) as count')
        ->groupBy('display_name')
        ->get();

Однако построитель запросов не показал никаких ошибок, но показал другой результат с оператором SQL. Кто-нибудь может разобраться в моей проблеме с построителем запросов?
Приветствуются любые предложения и комментарии по поводу моего конструктора запросов.


Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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 и хотите разрабатывать...
0
0
145
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вероятно, проблема заключается в том, что предложение OR WHERE не инкапсулируется построителем запросов Eloquent. Для этого вы можете передать закрытие в where(), как показано ниже.

Я также сгруппировал выбранные элементы в один вызов метода с использованием DB::raw вместо метода selectRaw().

DB::table('pams_users')
    ->join('pams_developer','pams_developer.id','pams_users.developer_id')
    ->join('pams_user_levels','pams_user_levels.id','pams_users.user_level')
    ->select([
        'developer_name',
        'description',
        'display_name',
        DB::raw('count(pams_users.id) as count'), // this avoids the separate selectRaw()
    ])
    ->where(function($query) {
        $query->where('pams_developer.id',27)
            ->orWhere('pams_users.parent_dev',27);
    })
    ->where('pams_user_levels.id',6)
    ->groupBy('display_name')
    ->get();

Оооо, извините, я только что увидел ваш ответ. Однако я это уже решил. Спасибо !!

Ho Wei Kang 02.05.2018 12:04

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