基于嵌套关系计数的排序模型-Laravel 8
我有三个表基于嵌套关系计数的排序模型-Laravel 8,laravel,eloquent,Laravel,Eloquent,我有三个表类别,课程,和用户 课程和用户表格有中间表格用户课程 他们有以下关系 类别模型 public function courses() { return $this->hasMany(Course::class, 'category_id', 'id'); } public function category() { return $this->belongsTo(Category::class, 'category_id', 'id'); } public
类别
,课程
,和用户
课程
和用户
表格有中间表格用户课程
他们有以下关系
类别模型
public function courses()
{
return $this->hasMany(Course::class, 'category_id', 'id');
}
public function category()
{
return $this->belongsTo(Category::class, 'category_id', 'id');
}
public function users()
{
return $this->belongsToMany(User::class, 'user_courses', 'course_id', 'user_id');
}
课程模式
public function courses()
{
return $this->hasMany(Course::class, 'category_id', 'id');
}
public function category()
{
return $this->belongsTo(Category::class, 'category_id', 'id');
}
public function users()
{
return $this->belongsToMany(User::class, 'user_courses', 'course_id', 'user_id');
}
现在我希望所有类别的课程都有用户,这些类别应该按照users\u count
降序排列
有什么雄辩的方法可以实现它吗?你应该在你的
类别
模型中定义一个hasManyThrough
关系
public function users()
{
return $this->hasManyThrough(User::class, Course::class);
}
然后,您可以使用以下方法对用户计数进行排序
Category::with('courses.users')
->withCount(['users' => function($query) {
$query->orderBy('users_count', 'desc');
}])
->get();
您应该在
类别
模型中定义hasManyThrough
关系
public function users()
{
return $this->hasManyThrough(User::class, Course::class);
}
然后,您可以使用以下方法对用户计数进行排序
Category::with('courses.users')
->withCount(['users' => function($query) {
$query->orderBy('users_count', 'desc');
}])
->get();
您可以使用
with count
,然后将其用作order by
。我需要嵌套关系的计数,即用户
然后必须根据该计数对类别进行排序,即用户
计数与计数用于与有许多类似@Anrut Chapan的关系,并在其回答中使用它。您可以使用与计数
并将其作为顺序使用通过
。我想要嵌套关系的计数,即用户
,然后必须根据该计数对类别进行排序,即用户
与计数
用于与@Anrut Chapano类似的hasManyThrough
关系,并在其回答投票中使用它,因为解决方案是使用hasManyThrough
关系但我的表结构与你们关系中的表结构不同。向上投票,因为解决方案是使用hasManyThrough
关系,但我的表结构与你们关系中的表结构不同。