为什么Raw sql在laravel DB中不起作用

时间:2018-04-11 20:24:25

标签: sql laravel rawsql

我有这句话:

$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 个答案:

答案 0 :(得分:0)

鉴于您从各种评论中寻找的内容,以下内容应与您所接受的内容相近:

SELECT user_id, MAX(last_operation) AS last_operation
  FROM policies
  JOIN users
    ON policies.user_id = users.id
  GROUP BY user_id

祝你好运。

答案 1 :(得分:0)

首先,您必须确保您的SQL查询可以在您的数据库工具中返回一些内容,如mysql或sqlite等。之后将代码更改为:

$lastOperationUser = DB::table('policies')->join('users', 'users.id', '=', 'policies.user_id')
                                          ->select('last_operation')
                                          ->groupBy('user_id')
                                          ->get();

我认为你可以不使用DB raw

这样使用

如果发生错误,请转到config\database.php并设置'strict' => false