Похоже, что вам нужна связь ManyToMany (ownToMany), как сказал @ Aless55. Таким образом, ожидается, что бронирование может содержать одну или несколько комнат, в то время как комната может быть (ни одной или) более чем в одном бронировании. другая таблица), вы можете получить доступ к другой модели. Ваш случай будет выглядеть примерно так:
Модель бронирования
public function rooms()
{
return $this->belongsToMany(Room::class, 'RoomAvailabilities');
}
Модель номера
public function bookings()
{
return $this->belongsToMany(Booking::class, 'RoomAvailabilities');
}
Eloquent будет соедините имена двух связанных моделей в алфавитном порядке, чтобы получить сводную таблицу. Обратите внимание, что в вашем случае необходимо использовать второй параметр (необязательный), поскольку номенклатура этой таблицы (RoomAvailabilities) выходила за рамки ожидаемого стандарта Eloquent.
Есть удобный способ доступа к атрибутам таблицы ссылок. Просто получите доступ к сгенерированному атрибуту под названием pivot. Пример:
$booking = Booking::find(1);
foreach ($booking->rooms as $room) {
echo $room->pivot->status;
}
Чтобы получить несколько бронирований связанных номеров, используйте метод with
( активная загрузка ), например:
$bookings = Booking::with('rooms')->get();
Посмотрите документацию . Там вы найдете другие возможности, такие как:
- Настройка имени атрибута сводной таблицы
- Отношения фильтрации через столбцы промежуточной таблицы
- Определение пользовательских моделей промежуточных таблиц