Laravel: проверить, существует ли запись в базе данных - PullRequest
0 голосов
/ 18 апреля 2020

Так что в настоящее время в моей системе есть проверка, которая проверит, были ли введены две даты ранее. Если у них есть, пользователь не может перейти к оформлению заказа и c, если у них разные даты, они могут продолжить. Однако проблема, с которой я сталкиваюсь, заключается в том, что эта проверка работает для любого отеля и должна указываться только c для одного отеля, который они бронируют.

Например, если один из отелей забронирован на 18/04 / 2019, и я хочу забронировать отель два на те же дни, проверка не позволит мне проверить, так как даты совпадают. Это неверно, и мне следует указать, что это другой отель, хотя даты совпадают.

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

public function getCheckout(Request $request)
{
    if (!Session::has('cart')) {
        return view('shop.shopping-cart');
    }
    //$post = Post::find($id);
    $oldCart = Session::get('cart');
    $cart = new Cart($oldCart);
    $total = $cart->totalPrice;
    $checkIn = $request->input('checkIn');
    $checkOut = $request->input('checkOut');

    $post = Order::where('checkIn', '=', $checkIn)
        ->where('checkOut', '=', $checkOut)
        ->get();

    if (count($post) > 1) {
        return redirect()->route('posts.shopping-cart')->with('Sorry this date has been taken');
    } else {
        return view('posts.checkout', ['total' => $total, 'checkIn' => $checkIn, 'checkOut' =>
            $checkOut]);

    }
}

Теперь проблема в том, что у меня нет пропуска $ id гостиницы. Приведенная ниже функция изначально добавляет мой $ id в корзину, как мне точно добавить $ id в функцию 'getCheckout' и проверить его?

public function getAddToCart(Request $request, $id)
{
    $post = Post::find($id);
    $cart = Session::has('cart') ? Session::get('cart') : null;
    if (!$cart) {
        $cart = new Cart($cart);
    }
    $cart->add($post, $post->id);
    Session::put('cart', $cart);
    // dd($request->session()->get('cart'));
    return redirect()->route('posts.index');
}

Если кто-то может помочь, это будет здорово. Мне просто нужно передать идентификационный номер отеля в мой чек и проверить, совпадают ли даты в отеле, даты заезда и отъезда.

1 Ответ

0 голосов
/ 18 апреля 2020

Я не могу сказать из кода, как выглядят ваши маршруты, но в настоящее время мне кажется, что проще всего изменить ваш маршрут getCheckout следующим образом:

Route::post('checkout/{hotelId}', 'CheckoutController@getCheckout');

И затем в вашем методе вы можете получить его следующим образом:

public function getCheckout(Request $request, $hotelId)
{
    ...
}

Вызов маршрута из вашей формы (если вы выполняете запрос POST), конечно, должен быть изменен, чтобы он включал требуемый вами ID как это:

<form action="{{ route('checkout', $hotelId) }}" method="POST">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...