我有三个桌子-- categories,courses和users。
courses和users表具有中间表user_courses。
他们有以下的关系
范畴模型
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_count按降序排列。
有什么雄辩的方法来实现这一点吗?
发布于 2021-02-18 06:33:09
您应该在hasManyThrough模型中定义一个Category关系。
public function users()
{
return $this->hasManyThrough(User::class, Course::class);
}然后,您可以使用以下方法对用户计数进行排序
Category::with('courses.users')
->withCount(['users' => function($query) {
$query->orderBy('users_count', 'desc');
}])
->get();https://stackoverflow.com/questions/66254461
复制相似问题