Ваша mysql версия 5.7+, поэтому проверьте эту ссылку
MySQL 5.7.5 и выше реализует обнаружение функциональной зависимости. Если включен режим ONLY_FULL_GROUP_BY SQL (который по умолчанию), MySQL отклоняет запросы, для которых список выбора
Решение 1:
Проверка конфигурации / базы данных . php, если ваша mysql конфигурация strict => true
, вам необходимо отключить ONLY_FULL_GROUP_BY
, добавить modes
следующим образом:
'mysql' => [
'driver' => 'mysql',
...
'strict' => true,
'engine' => null,
'modes' => [
//'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION'
],
],
PS: set strict => false
тоже может работать, но отключение делает ваше приложение незащищенным.
Решение 2:
Использование ANY_VALUE :
Эта функция полезна для запросов GROUP BY, когда режим ONLY_FULL_GROUP_BY SQL включен, если MySQL отклоняет запрос, который, как вы знаете, действителен по причинам, которые MySQL не может определить. Возвращаемое значение и тип функции совпадают с возвращаемым значением и типом ее аргумента, но результат функции не проверяется для режима ONLY_FULL_GROUP_BY SQL.
$dataP = DB::table('chantiers')
->leftJoin('pointages','pointages.chantier_id','chantiers.id')
->selectRaw('COALESCE(SUM(pointages.sold),0) AS sold, ANY_VALUE(chantiers.chantier) AS chantier, pointages.chantier_id')
->groupBy('pointages.chantier_id')
->get();
PS: ANY_VALUE
не существует в MariaDB .