Области Laravel Query для системы бронирования отелей с несколькими комнатами по методу редактирования - PullRequest
0 голосов
/ 10 октября 2018

Я работаю в системе бронирования отелей, где пользователь / администратор может выбрать несколько номеров для бронирования.

Я столкнулся с проблемой в edit функциональность.Я ищу помощь и предложения о том, как сделать это правильно.

Моя схема.

Номера:

room_number
price
reserved (Boolean)
maintenance (Boolean)

Бронирование:

customer_id
checkin
checkout

Reservation_Room

room_id
reservation_id
TotalPrice

Объем запросов по комнатам:

public function scopeIsNotReserved($query)
{
    return $query->where('reserved', false);
}

Модель резервирования отношений:

public function rooms()
{
    return $this->belongsToMany(Room::class);
}

Фактическая проблема:

Iне может использовать IsNotReserved query scope при редактировании бронирования, потому что оно не передаст значение выбранным параметрам.

Я хотел бы пропустить все номера, которые не зарезервированы, кроме этого reservation_id (см. $roomId).

Моя функция редактирования контроллера выглядит следующим образом:

$reservation = Reservation::findOrFail($id);

$customers = Customer::pluck('name', 'id')->toArray();

// В данный момент ничего не делаем с этим запросом.

$roomId = $reservation->rooms()->pluck('rooms.id')->toArray();

Получение всех комнат

$rooms = Room::IsNotOnMaintenance()->get();

1 Ответ

0 голосов
/ 10 октября 2018

Хорошо, как я вас понял, вы хотите использовать область действия, но передать массив идентификаторов, которые хотите исключить из результата запроса?Если это так, я опубликую пример этой области:

public function scopeIsNotReserved($query, $exclusions)
{
    return $query->where('reserved', false)->whereNotIn('id', $exclusions);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...