我有两个主要问题,都与 eloquent 的热切加载有关。
第一个问题:
因为我们已经预先加载了关系,所以我们已经加载了对象。例如,
Tag::with('posts');
将急切地加载标签的所有帖子。那么如果我想计算第一个标签的帖子数量,使用Tag::first()->posts()->count()or会更好Tag::first()->posts->count()吗?
我知道通常答案是第一个,因为我们不想加载所有集合,而是只想使用一个查询来完成。但是,在这种情况下,我假设我们已经加载了集合,所以就像我们已经支付了成本一样,因此我觉得在这种情况下第二个会更好?
旁注:我知道我们可以withCount('posts')在这种情况下使用,但我的意思是了解何时使用关系计数与集合计数。
第二个问题:
我还想知道我们是否已经使用过
,Tag::with('posts')那么如果我想计算第一个标签的帖子,使用Tag::first()->posts()->count / Tag::first( )->posts->count或使用会更快吗?的关系,同时也想得到计数?Tag::withCount('posts')->with('posts')withCount()