为什么 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
我有这句话:
$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