Почему 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

Другие вопросы по тегам