Laravel 查询生成器 - 在自定义列上排序

Laravel Query Builder - Ordering on a Custom Column

我想在自定义列(first_name 和 last_name 的连接)上对我的 Laravel 查询生成器结果进行排序。

我所做的是-

    $summary = DB::table('service_rating')
                ->join('partners', 'partners.id',   '=', 'service_rating.partner_id')
                ->join('users',     'users.id',     '=', 'partners.user_id')
                ->select(
                            DB::raw("CONCAT( users.first_name,' ', users.last_name) as lawn_pro"),
                            DB::raw ('AVG(service_rating.rating)                    as rating'),
                            DB::raw ('COUNT(service_rating.rating)                  as jobs'),
                            DB::raw ('SUM(service_rating.rating)                    as payout')
                        )
                ->where('customer_id', '=', Auth::user()->id)
                ->whereRaw('service_rating.created_at >= DATE(NOW()) - INTERVAL '.$no_of_day_to_show.' DAY')
                ->groupBy('service_rating.partner_id')
                ->orderBy('lawn_pro', 'asc');

所以,我收到了这一行的错误 -

                ->orderBy('lawn_pro', 'asc');

错误是这样的-

有人可以帮忙吗?

显然您在查询中使用了 count() 函数,这忽略了 select 属性,因为我们只想知道行数。因此,lawn_pro 在查询中不可用。

我建议执行查询,然后计算可用行数。

$rows = $summary->get();
$count = count($rows);