Структура модели выглядит следующим образом
Учебник -> (hasMany) Главы -> (hasMany) видео
Как загрузить количество видео (video_count) из учебной модели с помощью метода larvel 5.3 с помощью метода 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'])
Docs: