求教各位关于关联表取数据的问题
新人提问,请见谅.
问题是这样的:
文章表关联评论表.
我想在取文章列表的时候,想要每篇文章取5条评论.
我的代码这么写的
Post::with([
'comments' => function($query){
$query->take(5);
}
])->paginate();
它生成的SQL语句
select * from `comments` where `comments`.`post_id` in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) limit 5
也就是在所有文章取5条评论,跟我预期的不太一样,望各位指点一下,该如何操作?
关于 LearnKu
看起来很简单的问题,其实比较复杂。
最基本的是要理解关系查询的原理,应该是为了效率问题,关系查询就像你上面写的查询语句一样,是把所有的外键收集后再用 select in 语句来查询,最后再通过创建对应的 collection 赋值给对应的关系,而不是想当然的针对每个外键做查询。
所以你就很好理解了,为什么本来是想要每篇文章都对要5条comment,而结果只有5 条。
看下这篇文章吧。
@oustn 大鲲哥你好 :smile:
@Summer summer哥 不敢当啊 :smiley:
@oustn 非常感谢。
@chenzuanyu 模型中定义关联关系 https://www.cnblogs.com/x-x-j/p/7172046.ht...