2015-11-05 1 views
-1

Я хочу отсортировать результаты построителя запроса Laravel на пользовательском столбце (concat first_name и last_name).Laravel Query Builder - заказ на пользовательской колонке

То, что я сделал это-

$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'); 

и ошибок, как this-

enter image description here

Может кто-нибудь может помочь?

+0

'-> orderBy (" CONCAT (users.first_name, '', users.last_name) "," asc ")'? – roullie

+0

Не работает, попробовал –

ответ

0

По-видимому, вы используете функцию count() по вашему запросу, это игнорирует атрибуты выбора, потому что мы хотим знать только количество строк. Из-за этого lawn_pro недоступен в запросе.

Я предлагаю выполнить запрос и затем подсчитать доступные строки.

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

Если мне нужно будет рассчитывать, я бы не использовал orderby –

+2

. Тогда почему ваш запрос начинается с 'SELECT count (*) FROM ...'. Пожалуйста, покажите нам весь ваш код для этого запроса, чтобы мы могли видеть, что происходит. – Jerodev