2016-11-10 11 views
0

私は野球ゲームのページ番号付きリストを出力するページに単純なテーブルを持っています。ゲームの日付、地元チームと訪問チーム、そして都市を表示します。私は3つの優雅なモデル(ゲーム、チームと都市)を持っています。すべての関係が働いており、すべてが良いです。私は$game->localTeam->city->fullName(都市と州を組み合わせたミューテータ)をやることができて大好きです。Eloquent relationshipで並べ替え

データは、次のクエリから得られます。Game::with('teamHome', 'teamVisitor', 'teamHome.city')。私は任意の列で並べ替えることができるようにしたい。しかし、クエリで->orderBy()を使用すると、ゲームテーブルから結果をソートすることしかできません。私はチームや都市を分類する方法を見つけることができません。私が読んだことから、Fluentクエリを実行して、すべてのテーブルに参加する必要があります。しかし、私はstdClassオブジェクトの配列を持っていて、私のEloquent関係でナビゲートすることはできず、上記のfullNameミューテータを使用することができます。

このシナリオはとても基本的なようですが、これを行うためのエレガントな方法が必要ですか?

+0

$ game-> localTeam-> sortBy( '​​name')や$ game-> localTeam-> city-> sortyBy( '​​name')のようにできませんか? (TeamとCityは名前のプロパティを持っていると仮定します) –

答えて

0

->get()の後にsortByメソッドを使用できます。これでコレクションが取得され、ソートされます。

そうしないと、RAWクエリを実行できますが、流暢な構文が失われます。

+0

はい、それはページングされたページの結果のみをソートするでしょう。 – kag

+0

あなたは正しいです!あなたが言ったのと同じように、クエリビルダを使用する必要があるかもしれません。 Laravel 5.3からコレクションを返します – kanashin

関連する問題