我有三张桌子:
1)任务;
2)访问;
3)task_visit;
每次访问都可以有0个或几个任务。我需要按访问次数对任务进行排序。例如,第一项任务有4次访问,第2次 - 10次等。
在类似的情况下,我有两个表:
1)医生;
2)访问
我通过访问对医生进行排序
在StatVisit控制器中:
$tests = \App\Doctor::withCount(['visitsbydoctor' => function ($query) use ($a,$b){
$query->whereBetween('date', array($a,$b));
}])->orderBy('visitsbydoctor_count', 'desc')->paginate(1000000);
在医生模型中:
public function visitsbydoctor()
{
return $this->hasMany(Visit::class);
}
如果是数据透视表,如何重写此代码?对于Task模型和StatVisit控制器,如在医生案例中。
使用绝对相同的方法。 withCount()
也适用于多种关系:
Task::withCount('visits')->latest('visits_count')->get()
我找到了下一个工作方案:
$tests1 = \App\Task::withCount(['taskvisit' => function ($query) use ($a,$b){
$query->whereBetween('date', array($a,$b));
}])->orderBy('taskvisit_count', 'desc')->paginate(1000000);
public function taskvisit()
{
return $this->belongsToMany(Visit::class)->withPivot('task_visit', 'visit_id');
}