【问题标题】:Laravel Query Builder Error On Query Statement查询语句上的 Laravel 查询生成器错误
【发布时间】: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.idpeople.first_namepeople.last_namepeopleimg_urluser_messagesmessageuser_messagescreated_atpeople加入user_messagespeopleid = user_messagespeople_id其中 (people.user_id = 1) 分组 people.id 排序 user_messages.created_at desc)
  • MySQL : isn't in GROUP BY的可能重复
  • @aynber 它向我显示错误,直到我不包括 Group By 子句中的所有字段,但随后它选择了所有消息

标签: php laravel laravel-5


【解决方案1】:
$people = DB::table('people')
    ->join('user_messages','people.id','=','user_messages.people_id')
    ->select('people.id','people.first_name','people.last_name','people.img_url' ,'user_messages.message','user_messages.created_at')
    ->where(['people.user_id' => $user_id])
    ->groupBy('people.id')
    ->orderBy('user_messages.created_at', 'desc')
    ->get();

【讨论】:

  • 尝试删除分组依据。如果它有效,则 group by 也有问题..
  • 我将配置 database.php 更改为 'strict' => false,这很有效。不知道这是否是消除错误的正确方法。但它没有选择最后一条消息,而是选择任何 msg 。在这里解释:stackoverflow.com/questions/39138090/…
猜你喜欢
  • 2015-07-25
  • 2017-09-12
  • 1970-01-01
  • 2021-12-03
  • 2019-04-18
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
相关资源
最近更新 更多