我正在尝试为我的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
不可能的话,我可以创建一个自定义关系来支持它吗? 最佳答案
belongsTo()
返回一个查询生成器,以便您可以继续并在它的末尾链接->whereRaw()
:
public function billedVehicle() {
return $this->belongsTo(Vehicle::class)
->whereRaw(DB::raw('coalesce(billed_vehicle_id,vehicle_id)'));
}