【发布时间】:2018-08-03 21:51:12
【问题描述】:
我正在尝试从两个表中进行选择。从人员表需要名称和图像网址,从消息表需要用户发送/接收的最后一条消息。
在 people 中,人员 id 字段是唯一的,并且消息表具有人员 id。
我写了一个简单的查询来完成这个任务,但是当我在 laravel 中使用它时,它给了我一个错误,说“访问冲突”
这是我运行时有效的 sql 语句:
select people.id, people.first_name, people.last_name, people.img_url, user_messages.message, user_messages.created_at from people inner join user_messages on people.id = user_messages.people_id where people.user_id =1 group by people.id order by user_messages.created_at DESC
这是有错误的 Laravel 查询
$people = DB::table('people')->select('people.id','people.first_name','people.last_name','people.img_url' ,'user_messages.message','user_messages.created_at')
->join('user_messages','people.id','=','user_messages.people_id')
->where(['people.user_id' => $user_id])
->groupBy('people.id')
->orderBy('user_messages.created_at', 'desc')
->get();
如果我在 中包含所有字段,它不会向我显示错误消息,但随后选择了所有消息。
【问题讨论】:
-
完整的错误信息是什么?
-
@aynber 。 SQLSTATE[42000]:语法错误或访问冲突:1055 'project_name.people.first_name' 不在 GROUP BY 中(SQL:选择
people.id,people.first_name,people.last_name,people。img_url,user_messages。message,user_messages。created_at从people加入user_messages上people。id=user_messages。people_id其中 (people.user_id= 1) 分组people.id排序user_messages.created_atdesc) -
@aynber 它向我显示错误,直到我不包括 Group By 子句中的所有字段,但随后它选择了所有消息