我正在尝试为我的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)'));
}

09-18 15:59