我的索引站点上有许多类别(Category.php),它有许多Boards(Board.php) . 一个Board可以有很多主题(Topic.php),一个主题可以有很多回复(Reply.php) .
我想获取当前电路板的回复数量,可能需要加载 .
我有办法,但它执行太多查询 . 我创建了一个post_count属性,然后迭代每个主题并收集回复数量 . 有没有办法从当前的董事会中选择所有回复?
public function getPostCountAttribute()
{
$count = 0;
foreach ($this->topics()->withCount('replies')->get() as $topic) {
$count += $topic->replies_count;
}
return $count;
}
3 回答
找到了一个不错的方法即使如此,如果有人找到更好的方法,我会将这个问题保持开放 .
我声明了
hasManyThrough
关系,并且调用了count():Board.php:
然后叫:
执行了30个查询(之前45个) .
不过,我想找到一种加载数据的热切方式,将查询数量减少到2或3个查询 .
除了你的reply,你可以做这样的事情 .
并使用此用途如下
请注意,您必须根据您的要求更改查询 .
试试吧
Change
To