Результат обновления Laravel Eloquent перед просмотром - PullRequest
0 голосов
/ 05 июня 2019

У меня есть база данных аренды, которую пользователь может фильтровать.Я использую конструктор запросов для этого.Пример:

$builder = Rentals::query();
$builder = $builder->select('rentals.*');
if($request->destination_id) { $builder = $builder->where('rentals.destination_id',$request->destination_id);

и т. Д.У меня есть таблица доступных.У меня нет всех возможностей для всех прокатов.Если пользователь выбирает диапазон дат, на данный момент я сравниваю этот диапазон с таблицей доступных возможностей и возвращаю значение true или false, если этот диапазон доступен для этой аренды, и сохраняю этот идентификатор в массиве, затем делаю что-то вроде этого:

$rentalsWithAvails = Rentals::where('true_availability',1)->get();
foreach($rentalsWithAvails as $rentalsWithAvail) {
    if(Booking::isBookingAvailableR($rentalsWithAvail->id, $request->dates)) {
        $rentalIdArr[] = $rentalsWithAvail->id;
    }
}
$builder->whereIn('rental.id', $rentalIdArr);

В какой-то момент у меня будут все возможности, так что это станет безмолвным, но сейчас мне нужно как-то с этим справиться, и как БЫЛО это работало.Меня попросили изменить это, поэтому я показываю все варианты аренды (если они не забронированы) с доступными наверху, независимо от того, действительно ли у нас сохранены эти возможности аренды.Я не уверен, как это сделать, кроме того, что вытащил два набора арендных плат и сравнил их, что было бы неэффективно.

Последнее - «В конце я разбиваю результаты на части, что дает мне такой результат».Я полагаю, что нужно выполнить логику перед разбиением на страницы.

Проще говоря, есть ли способ получить все арендные платы (все, которые не забронированы, для которых я могу получить этот список идентификаторов) и почтивернуться через них, прежде чем я сделаю пагинацию, установить новый флаг для доступных?Вначале я могу сделать что-то вроде:

$builder = $builder->select('rentals.*','0 as is_available');

, а затем вернуться назад, прежде чем я сделаю пагинацию, и установить is_available = 1, если это в пределах этого массива идентификаторов, затем упорядочить по is_available, а затем разбить на страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...