Мне нужно выполнить пользовательский запрос, и я попробовал все эти методы
$sql = "SELECT acd.*, DATE_FORMAT(acd.cdate, '%d/%m/%Y') cdate_disp,
GROUP_CONCAT(CONCAT_WS(', ', car.type, car.session, crd.name) SEPARATOR '<br />') rd_names,
acb.booking_status my_booking_status
FROM app_data acd
INNER JOIN crmaccounts ca ON ca.id = acd.client_crm_id
LEFT JOIN crmaccount_rdids car ON car.account_id = ca.id
LEFT JOIN crmrd_ids crd ON crd.id = car.rd_id
LEFT JOIN app_bookings acb ON acb.call_ref_id = acd.call_ref AND acb.user_id = 12391
WHERE 1=1
AND acd.client_crm_id NOT IN (select account_id from bstaff WHERE user_id=12391)
GROUP BY acd.id
ORDER BY acd.cdate, ctiming";
DB:select($sql);
кидает
Подсветка \ База данных \ QueryException (42000)
SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1055 «mydatabase.acd.call_ref» отсутствует в GROUP BY (SQL: ....)
DB::select($sql);
DB::raw($sql);
DB::select(DB::raw($sql));
//even with pdo
$sth = DB::getPdo()->prepare($sql);
$sth->execute();
$data = $sth->fetchAll(\PDO::FETCH_OBJ);
PDOException (42000)
SQLSTATE[42000]: Syntax error or access violation: 1055 'mydatabase.acd.call_ref' isn't in GROUP BY
Кажется, что единственный способ начать работу - перечислить все столбцы таблицы в group by
, что выполнимо, но не удобно.
Я могу выполнить тот же запрос непосредственно в phpmyadmin. Поэтому я не уверен, почему, когда я запускаю его через Laravel, он просит добавить все столбцы.
У меня установлена MariaDB, и Laravel и PhpMyAdmin подключаются к одному экземпляру. Larvel версия 5.8.5.
Пожалуйста, посмотрите на полный запрос, так как я тоже задавал вопрос здесь, но не смог найти ответа - https://laracasts.com/discuss/channels/eloquent/query-runs-ok-in-phpmyadmin-but-dbselect-throws-exception