Я пытаюсь добавить отношение к моей 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)'));
}
Других решений пока нет …