laravel: проверка существующих записей в моей базе данных - PullRequest
0 голосов
/ 17 апреля 2020

Итак, у меня есть система бронирования отелей, в которой, когда пользователь нажимает кнопку «Оформить заказ», он должен проверить, существует ли запись. Запись проверена; если он имеет тот же день регистрации в этом конкретном отеле. В настоящее время я могу выбрать даты и отель и go прямо, чтобы проверить без какой-либо проверки. У меня есть две функции (PostsController. php), которые мне нужно сжать в одну, так как я обнаружил, что это будет гораздо проще выполнить, однако я не уверен, как на самом деле это структурировать.

PostsController. php:

    public function getAvailability (Request $request) {
             $user_id = $request->input('user_id');
             $checkIn = $request->input('checkIn');
             $checkOut = $request->input('checkOut');

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

            if(count($post) > 0) {
             return redirect()->route('posts.shopping-cart')->with('There is a clash');
             } else {
                    return redirect()->route('posts.checkout')->with('There is no clash');
                }
}
public function getCheckout(Request $request)
{
    if (!Session::has('cart')) {
        return view('shop.shopping-cart');
    }
    $oldCart = Session::get('cart');
    $cart = new Cart($oldCart);
    $total = $cart->totalPrice;
    $checkIn = $request->input('checkIn');
    $checkOut = $request->input('checkOut');
    return view('posts.checkout', ['total' => $total, 'checkIn' => $checkIn, 'checkOut' => 
    $checkOut]);
}

Здесь я хочу, чтобы getAvailability использовалась в getCheckout, IE, я хочу, чтобы getCheckout была моей основной функцией. Также я делаю свою функцию правильно?

1 Ответ

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

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

$user_id = $request->input('user_id');
$checkIn = $request->input('checkIn');
$checkOut = $request->input('checkOut');

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

в функцию в вашей Order модели, которая будет checkAvailability (или что-то подобное), и тогда вы сможете использовать эту функцию в вашем getAvailability и getCheckout в Контроллере сообщений.

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