首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于嵌套关系计数的排序模型- Laravel 8

基于嵌套关系计数的排序模型- Laravel 8
EN

Stack Overflow用户
提问于 2021-02-18 06:02:12
回答 1查看 120关注 0票数 0

我有三个桌子-- categoriescoursesusers

coursesusers表具有中间表user_courses

他们有以下的关系

范畴模型

代码语言:javascript
复制
public function courses()
{
    return $this->hasMany(Course::class, 'category_id', 'id');
}

课程模型

代码语言:javascript
复制
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按降序排列。

有什么雄辩的方法来实现这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2021-02-18 06:33:09

您应该在hasManyThrough模型中定义一个Category关系。

代码语言:javascript
复制
public function users()
{
    return $this->hasManyThrough(User::class, Course::class);
}

然后,您可以使用以下方法对用户计数进行排序

代码语言:javascript
复制
Category::with('courses.users')
    ->withCount(['users' => function($query) {
        $query->orderBy('users_count', 'desc');
    }])
    ->get();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66254461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档