繁体   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