gpt4 book ai didi

php - Laravel 5.3 withCount() 嵌套关系

转载 作者:IT王子 更新时间:2023-10-29 00:02:34 26 4
gpt4 key购买 nike

模型结构如下

教程 -> (hasMany) 章节 -> (hasMany) 视频

我们如何使用 laravel 5.3 的 withCount() 方法从教程模型加载视频数 (video_count)

我试过:

Tutorial::withCount('chapters')
->withCount('chapters.videos') // this gives error: Call to undefined method Illuminate\Database\Query\Builder::chapters.videos()
->all();

编辑

这行得通,还有更好的解决方案吗?

Tutorial::withCount('chapters')
->with(['chapters' => function($query){
$query->withCount('videos');
}])
->all();

最佳答案

您只能对模型的已定义关系执行 withCount()

但是,关系可以是 hasManyThrough,这将实现您的目标。

class Tutorial extends Model
{
function chapters()
{
return $this->hasMany('App\Chapter');
}

function videos()
{
return $this->hasManyThrough('App\Video', 'App\Chapter');
}
}

然后你可以这样做:

Tutorial::withCount(['chapters', 'videos'])

文档:

关于php - Laravel 5.3 withCount() 嵌套关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39633691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com