2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用這樣的東西:
Track::with('artist')->join('artist', 'artist.id', '=', 'track.artist_id')->orderBy('artist.name', 'DESC')->get()
我希望你明白我的意思

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
你不能用你的代碼按藝術(shù)家的名字排序,因?yàn)?laravel,對(duì)于eager load有曲目的藝術(shù)家,執(zhí)行兩個(gè)查詢,你應(yīng)該使用 ajoin來(lái)進(jìn)行一個(gè)查詢,但我給出了另外兩個(gè)選項(xiàng)(我不喜歡 joins):
1)您可以在結(jié)果集合上使用sortBy()或sortByDesc()(如果要降序排序),例如:
$tracks = Track::with('artist')->where('number', 1)->get()->sortBy('artist.name');
2) 您可以從 Artist 開始查詢,但您必須稍微更改一下您的視圖,例如:
$artists = Artist::with(['tracks' => function($q) {
$q->where('number', 1);
}])->orderBy('name')->get();
3)您可以使用連接,請(qǐng)參閱另一個(gè)答案。
僅供參考,如果您想調(diào)試查詢,只需追加->toSql()代替->get()以獲取您的SQL.
- 2 回答
- 0 關(guān)注
- 242 瀏覽
添加回答
舉報(bào)