[英]Laravel 5 orderby one-to-one relation
使用Laravel 5.1和Eloquent時,我遇到了一個非常基本的問題。
為了簡單起見,我通過這個例子減少了我的問題:我有2個模型:
信息:
ID | name | fk_city
城市:
ID | name | postalcode
在Leads.php模型中:
public function city() {
return $this->belongsTo('\App\Models\Cities','fk_city');
}
我想對城市名稱的線索進行排序。
我試過eagger load orderby:
Leads::with(['city'=>function($q) {
$q->orderby('name','desc');
}])->get();
但它不會影響結果。
我還讀到我們必須使用“join()”語句並手動告訴Eloquent要做什么。 看起來有點矯枉過正,因為這種類型的東西是任何ORM必須能夠原生才能完成的基本內容。
謝謝你的想法:)
Eloquent遵循Active記錄模式,因此通常使用單獨的查詢進行預先加載。 你需要加入這個:
Leads::join('cities', 'leads.fk_city', '=', 'cities.ID')->orderby('cities.name','desc')->with('city')->get();
如果您經常需要此類查詢,則可以在模型中創建范圍以重用查詢。
其他選項是,因為您的結果是Laravel Collection,您可以使用集合對象的sortBy()
或sortByDesc()
方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.