Laravel 5.4:如何在Eloquent中按count(column)排序?

3
我正在尝试按照最多工单的assigned_to顺序显示受托人的名称。
$accesses = Access::where('state','=','Assigned');

$all = Report::where('state', '=', 'Assigned')
               ->union($accesses)
               ->orderBy('count(assigned_to)') //THIS IS WRONG
               ->get();

在您的Laravel orderBy中使用DB::raw()进行计数。 - aldrin27
请您澄清一下您的回答? - Grant Gubatan
->orderBy(DB::raw('query here')) -> 按(DB::raw('查询语句'))排序 - aldrin27
请问您能否发布上述查询的结果数组/集合? - Narendrasingh Sisodia
4个回答

3

你需要使用DB::raw来获取它

$all = Report::where('state', '=', 'Assigned')
            ->select(DB::raw('count(reports.assigned_to) as assigned_to'))
            ->union($accesses)
            ->orderBy('assigned_to','DESC') 
            ->get();

2
或者您可以使用 selectRaw - fubar
但它只会计算报告表的assigned_to,我希望能够计算union后的表的assigned_to。 - Grant Gubatan
所以把查询方式传递,就像你在这里分配和传递一样。 - Exprator

1
尝试这样做。
$accesses = Access::where('state','=','Assigned');

$all = Report::where('state', '=', 'Assigned')
                ->union($accesses)
                ->orderBy(DB::raw('count(assigned_to)'),'DESC') 
                ->get();

0

试试这个:

$all = Report::where('state', '=', 'Assigned')
             ->select(DB::raw('count(reports.assigned_to) as assigned_to'))
            ->union($accesses)
            ->orderBy('assignedto','DESC') 
            ->get();

但它只会计算报告表的assigned_to,我希望能够计算联合表的assigned_to。 - Grant Gubatan

0

我觉得你可以试试这个:

$all = Report::where('state', '=', 'Assigned')
            ->select(DB::raw('count(reports.assigned_to) as assigned_to'),DB::raw('count(access.assigned_to) as assigned_to_access'))
            ->leftjoin('access','report.access.id','=','access.id')
            ->union($accesses)
            ->orderBy('assigned_to','DESC')
            ->orderBy('assigned_to_access','DESC') 
            ->get();

希望这对你有所帮助!!!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接