簡體   English   中英

Laravel Eloquent-查找訂單

[英]Laravel Eloquent - find order

我從數據庫中獲得3條記錄

  return \App\Work::find([12, 2, 3]);

令人討厭的是,當我將它們傳遞給視圖時,它們會重新排序。

有沒有辦法保留它們“被發現”的順序?

MySQL允許您使用以下語法為給定字段指定順序:

SELECT * FROM work ORDER BY FIELD(id, 12, 2, 3);

結合orderByRaw()orderByRaw()方法( https://laravel.com/api/5.5/Illuminate/Database/Query/Builder.html#method_orderByRaw ),您應該可以執行以下操作:

return \App\Work::whereIn('id', [12, 2, 3])->orderByRaw('FIELD (id, 12, 2, 3)')->get();

find()方法不適用於此方法,因為它會立即返回對象,因此我們需要使用WHERE IN子句作為ID。 顯然,由於當前ID已重復,因此需要進行一些重構,但這應該可以實現您想要的。

像這樣嘗試sortBy

return \App\Work::find([12, 2, 3])->sortBy(function($el){
    return array_search($el->getKey(), [12, 2, 3]);
}

關於getKey

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM