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