我正在尝试为我的Booking
模型添加关系。我已经有了这样的关系:
public function vehicle() {
return $this->belongsTo(Vehicle::class);
}
哪个适用于bookings.vehicle_id
列。但是,现在我正在添加另一个名为bookings.billed_vehicle_id
的列,如果它不为空,它将“覆盖”vehicle_id
。所以我想做这样的事情:
public function billedVehicle() {
return $this->belongsTo(Vehicle::class,DB::raw('coalesce(billed_vehicle_id,vehicle_id)'));
}
这可能吗?
如果用belongsTo
不可能,我可以以某种方式创建一个支持这个的自定义关系吗?
答案 0 :(得分:3)
belongsTo()
会返回一个查询构建器,以便您可以继续并在其末尾链接->whereRaw()
:
public function billedVehicle() {
return $this->belongsTo(Vehicle::class)
->whereRaw(DB::raw('coalesce(billed_vehicle_id,vehicle_id)'));
}