web-dev-qa-db-ja.com

Laravel 5.1-2列で並べ替えが意図したとおりに機能しない

Quarter_numberとQuarter_yearの2つの列があります。 Quarter_number列には1から4までの値が格納され、quarter_yearには年の値が格納されます。たとえば、次のようにデータを並べ替えたいと思います。

_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ステートメントが何であれ)でソートするだけです。このために、独自のカスタム基数ソートをプログラムする必要がありますか?それとももっと良い方法はありますか?

ありがとうございました。

8
jrgilman

次のように、最初にquarter_yearを使用する必要があると思います。

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