2016-12-09 1 views
1

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

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

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 

ответ

1

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

У меня была такая же проблема и установка ложных решений моей проблемы!

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

Если вы хотите найти: Strict database config Laravel 5.2 to Laravel 5.3

Смежные вопросы