Нарушение доступа к построителю запросов Laravel 5.3 для группы

Я использую Laravel 5 в течение недели, и теперь я пришел к тому, что хочу преобразовать все свои существующие необработанные SQL-запросы с помощью Query Builder, но у меня есть проблема.

Когда я запускаю следующий запрос, я получаю это сообщение об ошибке

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1055 'procurement.pp_proposals.title' не находится в GROUP BY

$proposals = DB::table('tableA')
                ->join('tableB', 'tableA.id', '=', 'tableB.id')
                ->leftJoin('tableC', 'tableA.id', '=', 'tableC.id')
                ->select(DB::raw('tableA.id, title, date_created, date_completed, percent_complete, complete, COALESCE(COUNT(tableC.id), 0) AS total_ids'))
                ->where([
                    ['tableB.user', '=', Auth::user()->username],
                    ['submitted', '=', '0'],
                ])
                ->groupBy('tableA.id')
                ->orderBy('title', 'asc')
                ->get();

Это мой необработанный SQL, который отлично работает, поэтому я не понимаю, почему мне нужно GROUP BY для всех дополнительных столбцов.

SELECT tableA.id, 
        title,
        date_created,
        date_completed,
        percent_complete,
        complete,
        COALESCE(COUNT(tableC.id), 0) AS 'total_ids'
FROM tableA
    INNER JOIN tableB
        ON tableA.id = tableB.id
    LEFT JOIN tableC
        ON tableA.id = tableC.id
WHERE submitted = '0' AND tableB.user = 'user' 
GROUP BY tableA.id
ORDER by title ASC

person AdRock    schedule 09.12.2016    source источник


Ответы (1)


Я не уверен, как это работает, но, конечно же, вы можете решить эту проблему, установив strict = false в файле config/database.php в свою конфигурацию MySQL!

У меня была такая же проблема, и установка значения false решила мою проблему!

На самом деле я только что открыл здесь вопрос, чтобы узнать, почему это происходит!

Если вы хотите следовать: строгая конфигурация базы данных Laravel 5.2 для Ларавель 5.3

person Gustavo Bissolli    schedule 18.01.2017