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);
我想在自定义列(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);