我有这句话:
$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
一对多关系
请帮忙吗?
答案 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