0

我有这句话:

$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      

一对多关系

请问有什么帮助吗?

4

2 回答 2

0

鉴于您从各种评论中寻找的内容的描述,以下内容应该接近您所追求的:

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

祝你好运。

于 2018-04-11T22:48:22.583 回答
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

于 2018-04-12T04:20:31.713 回答