Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于嵌套关系计数的排序模型-Laravel 8_Laravel_Eloquent - Fatal编程技术网

基于嵌套关系计数的排序模型-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
关系,但我的表结构与你们关系中的表结构不同。