2017-08-25 66 views
0

如何适用于雄辩的查询与“hasOne”关联关系表排序?在Laravel使用排序查询口才

品牌型号

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”进行排序。

回答

0

如果你想这样做,你就需要加强口才之外一点点,并加入你所需要的表。

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

我也建议你重新工作,你的表名称相匹配雄辩的默认命名惯例,因为这将使得代码更容易一些解析。

+0

嗨,感谢您的回复,但我期待能用“充分雄辩” – Franklin

+0

这只是使用Eloquent的查询生成器来加入表格,使用您设置的关系方法无法做到这一点。这是因为“Eloqent-LY”,你会得到它。 – Dwight

0

你应该尝试这可能对您的工作:

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

希望对你这个解决方案的工作!