簡體   English   中英

Laravel 5 orderby一對一的關系

[英]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.

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