【发布时间】:2021-09-20 12:20:31
【问题描述】:
我得到了名为Vehicles 的表,在其模型Vehicle 中定义了两个关系。
public function type(){
return $this->belongsTo("App\VehiclePivot", 'vehicle_type_id', "id");
}
和
public function workOrganization(){
return $this->belongsTo("App\WorkOrganization", 'workOrganization_id', "id");
}
当用作
$vehicles = Vehicle::with("type", "workOrganization");
他们工作得很好。显示每辆车的类型和工作组织。
如果我尝试
$vehicles = Vehicle::whereHas("type", function($query) use($request){
$query->where('name', '=', $request->type);
})->with("type")->get();
或
$vehicles = Vehicle::whereHas("workOrganization", function($query) use($request){
$query->where('name', '=', $request->workOrg);
})->with("workOrganization")->get();
它们也有效。
用户可以输入 type 或 workOrganization,或者两者都输入,也可以都不输入。
如果一个存在,那么只有那个关系应该“执行”,如果两者都有,那么两个关系都应该执行,如果它们都不存在,那么两个关系都应该执行。
可以通过eloquent完成吗?
【问题讨论】:
标签: laravel relationship