Laravel属于合并吗?

问题描述 投票:2回答:1

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

php mysql laravel laravel-5.2 coalesce
1个回答
3
投票

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

public function billedVehicle() {
    return $this->belongsTo(Vehicle::class)
        ->whereRaw(DB::raw('coalesce(billed_vehicle_id,vehicle_id)'));
}
© www.soinside.com 2019 - 2024. All rights reserved.