使用Eloquent Query在Laravel中排序

问题描述 投票:0回答:2

如何在具有“hasOne”关系的关系表的eloquent查询中应用排序?

品牌模型

class Brand extends Eloquent
{
    protected $table = 'brand';
    protected $primaryKey = 'id';
    protected $fillable = ['brand_name'];
    public $sortable = ['brand_name'];

    public function brandModel() {
        return $this->hasOne('App\Brandmodel', 'brand_id')
                        ->select('id', 'brand_id', 'brand_model_name');
    }
}

---------------------------------------

class Brandmodel extends Eloquent
{
    protected $table = 'brandmodel';
    protected $primaryKey = 'id';
    protected $fillable = ['brand_id'];
    public $sortable = ['brand_model_name'];
}

在这种情况下,我们可以使用“brand_name”进行排序。但我无法使用“brand_model_name”进行排序。

laravel sorting eloquent sql-order-by relational
2个回答
0
投票

如果你想这样做,你需要走出Eloquent一点点,然后加入你需要的桌子。

Brand::join('brandmodel', 'brandmodel.brand_id', '=', 'brand.id')
    ->orderBy('brandmodel.brand_model_name')
    ->get();

我还建议您重新编写表名以匹配Eloquent默认命名约定,因为它会使代码更容易解​​析。


0
投票

你应该试试这个:

Brand::leftJoin('brandmodel', 'brandmodel.brand_id', '=', 'brand.id')
    ->orderBy('brandmodel.brand_model_name','desc')
    ->get();
© www.soinside.com 2019 - 2024. All rights reserved.