我正在尝试加载最后5条评论,相关帖子只选择帖子中的ID和标题。
在第一种情况下,我决定从帖子中获取所有列:
Comment::with(['post'])->take(5)->orderBy('id', 'desc')->get();
它工作正常。
但是当我尝试只获得两列(“id,title”)时,帖子中没有任何内容被加载。
Comment::with(['post:id,title'])->take($number)->orderBy('id', 'desc')->get();
我做了一个测试,当我删除“orderBy('id','desc')”时,再次没问题。
Comment::with(['post:id,title'])->take($number)->get();
“orderBy”选项必定存在问题。
有没有办法解决它?这意味着只从“posts”表中选择选定的列并从最后一个订单结果?
谢谢。
答案 0 :(得分:2)
由于您的评论和帖子模型都包含id
,因此Laravel不知道您想要排序哪一个。因此,请为您的orderBy
添加一个表名:
Comment::with(['post:id,title'])->take($number)->orderBy('comments.id', 'desc')->get();
此处comments
是您的表/实体的名称,可能是comment
。