2016-01-05 3 views
6

У меня есть две колонки, quarter_number и quarter_year. Столбец quarter_number сохраняет значение от 1 до 4, а quarter_year хранит значение года. Я хочу, чтобы данные были отсортированы как так, например:Laravel 5.1 - Заказ по двум столбцам не работает должным образом

ex: (quarter_number - quarter_year) 
4 - 2015 
3 - 2015 
2 - 2015 
1 - 2015 
4 - 2014 
3 - 2014 
etc... 

Таким образом, казалось, что это заявление будет работать:

$last_figures = QuarterData::where('company_id', '=', $company->id) ->orderBy('quarter_number')->orderBy('quarter_year')->get();

К сожалению, это, кажется, не работает надлежащим образом (что Я думал, будет похож на сортировку радикса). Это заканчивается просто сортировкой по году (или что бы ни было для последнего утверждения OrderBy). Должен ли я просто запрограммировать свою собственную сортировку радикса для этого? Или есть лучший способ?

спасибо.

ответ

10

Я думаю, что вы должны использовать quarter_year первый, как это:

$last_figures = QuarterData::where('company_id', '=', $company->id) 
     ->orderBy('quarter_year')->orderBy('quarter_number')->get(); 
+0

Это, кажется, было это. Интересно, почему это работает, а другое нет. – jrgilman

+0

Я думаю, что вы действительно хотите - '$ last_figures = QuarterData :: где ('company_id', '=', $ company-> id) -> orderBy ('quarter_year', 'desc') -> orderBy (' quarter_number ',' desc) -> get(); 'который будет заказывать ваши данные в обратном порядке, т.е. 2015,2014,2013 и т. д. – dino

+0

Также вам необходимо заказать «quarter_year» сначала, чтобы вы получили нужную вам группировку, то есть заказываете сначала год, а затем квартал, чтобы получить квартальные номера, сгруппированные по годам. – dino

Смежные вопросы