Laravel属于合并吗?

时间:2018-01-02 20:05:05

标签: php mysql laravel laravel-5.2 coalesce

我正在尝试为我的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不可能,我可以以某种方式创建一个支持这个的自定义关系吗?

1 个答案:

答案 0 :(得分:3)

belongsTo()会返回一个查询构建器,以便您可以继续并在其末尾链接->whereRaw()

public function billedVehicle() {
    return $this->belongsTo(Vehicle::class)
        ->whereRaw(DB::raw('coalesce(billed_vehicle_id,vehicle_id)'));
}