【发布时间】:2019-12-22 20:35:36
【问题描述】:
我正在Laravel 5.8 上构建一个应用程序,其中我有一个名为company、technical_description、state、region 的模型。一家公司可以在许多州拥有多个地点,因此公司和州/地区具有many-to-many 关系。所以我的模型看起来像这样:
class Company extends Model {
use SoftDeletes;
protected $guarded = [];
public function states()
{
return $this->belongsToMany('App\State', 'company_state', 'company_id', 'state_id');
}
public function regions()
{
return $this->belongsToMany('App\Region', 'company_region', 'company_id', 'region_id');
}
public function technicalDescription()
{
return $this->hasOne('App\TechnicalDescription', 'company_id', 'id');
}
}
我现在正在构建一个data-table,其中有Company Name、Technical Details、State、Region 作为表头。我想根据这些关系进行排序,所以我在控制器中尝试了:
public function companies() {
return CompanyResource::collection(
Company::when($request->name, function ($q) use($request) {
$q->where('name', 'like', '%' . $request->name .'%');
})
->join('company_technical_description', 'companies.id', '=', 'company_technical_description.company_id')
->when($request->sort_by_column, function ($q) use($request) {
$q->orderBy($request->sort_by_column['column'], $request->sort_by_column['order'] );
}, function ($q) use($request){
$q->orderBy('updated_at', 'desc');
})
->paginate();
)
}
所以在这种情况下,如果我想对技术描述的任何细节进行排序,只需将company_technical_decription.established_date 推入$request->sort_by_column['column'] 即可轻松
但是在state 和region 的多对多关系的情况下,我不知道如何继续。
帮我解决。谢谢
【问题讨论】:
标签: laravel eloquent laravel-5.8