Laravel принадлежит к объединению?

Я пытаюсь добавить отношение к моей 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 Могу ли я как-то создать пользовательское отношение, которое будет поддерживать это?

2

Решение

belongsTo() возвращает построитель запросов, так что вы можете пойти дальше и просто цепочка ->whereRaw() в конце этого:

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

Другие решения

Других решений пока нет …