Почему Raw sql не работает в laravel DB
У меня есть это предложение:
$lastOperationUser = DB::select("SELECT last_operation FROM policies
INNER JOIN(users)
ON (policies.user_id=users.id)
group by (user_id);");
Если я выполняю в моем phpmyadmin работает нормально, но в laravel бросить эту ошибку:
SQLSTATE[42000]: Syntax error or access violation: 1055 'test.policies.last_operation' isn't in GROUP BY (SQL: SELECT last_operation FROM policies INNER JOIN(users) ON (policies.user_id=users.id) group by (user_id);)
Моя модель:
USERS POLICIES
id id
name last_operation
user_id
Отношение один ко многим
Любая помощь, пожалуйста?
2 ответа
Решение
Учитывая описание того, что вы ищете из различных комментариев, следующее должно быть близко к тому, что вы ищете:
SELECT user_id, MAX(last_operation) AS last_operation
FROM policies
JOIN users
ON policies.user_id = users.id
GROUP BY user_id
Удачи.
Во-первых, вы должны убедиться, что ваш sql-запрос может возвращать что-то в вашем инструменте базы данных, например, mysql, sqlite или т. Д. После этого измените ваш код следующим образом:
$lastOperationUser = DB::table('policies')->join('users', 'users.id', '=', 'policies.user_id')
->select('last_operation')
->groupBy('user_id')
->get();
Я думаю, что вы можете использовать как это без использования БД сырье
если возникает ошибка, перейдите к config\database.php
и установить 'strict' => false