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

Why Raw sql doesnt work in 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      

一对多关系

有什么帮助吗?

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

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

祝你好运。

首先你必须确保你的 sql 查询可以 return 你的数据库工具中的东西,比如 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