Laravel使用雄辩的联接表

时间:2018-05-27 17:11:27

标签: php laravel

我正在尝试加载最后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”表中选择选定的列并从最后一个订单结果?

谢谢。

1 个答案:

答案 0 :(得分:2)

由于您的评论和帖子模型都包含id,因此Laravel不知道您想要排序哪一个。因此,请为您的orderBy添加一个表名:

Comment::with(['post:id,title'])->take($number)->orderBy('comments.id', 'desc')->get();

此处comments是您的表/实体的名称,可能是comment