假设有如下模型关系:
Tutorial -> (hasMany) Chapters -> (hasMany) videos
我想在 Tutorial 模型中使用 withCount 统计 videos 的数量要怎么实现?
解决办法:
方法1:通过远程一对多关联关系统计。
模型定义如下关系:
class Tutorial extends Model
{
function chapters()
{
return $this->hasMany(Chapter::class);
}
function videos()
{
return $this->hasManyThrough(Video::class, Chapter::class);
}
}
调用:
Tutorial::withCount(['videos']);
方法2:通过闭包函数方式
Tutorial::with(['chapters' => function($query){
$query->withCount('videos');
}])
->get();