laravel - Laravel:检查数据库中是否存在记录
问题描述
所以我目前在我的系统上进行了验证,它将检查之前是否输入了两个日期。如果他们有用户不能继续结帐,如果他们有不同的日期,他们可以继续。但是我遇到的问题是,此验证适用于任何酒店,并且应该只针对他们预订的一家酒店。
例如,如果在 2019 年 4 月 18 日预订了一号酒店,而我想在同一天预订二号酒店,则验证不会让我退房,因为日期相同。这是不正确的,即使日期相同,它也应该让我通过不同的酒店。
我现在想继续检查是否选择了相同的酒店和相同的日期,如果它们相同,则我们无法继续。下面的函数用于我的验证:
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');
}
如果有人可以提供帮助,那就太好了。我只需要将酒店 ID 输入我的支票并检查酒店、入住和退房日期是否都匹配
解决方案
我无法从代码中看出您的路线是什么样的,但目前在我看来,最简单的做法是getCheckout
像这样修改您的路线:
Route::post('checkout/{hotelId}', 'CheckoutController@getCheckout');
然后在您的方法中,您可以像这样获取它:
public function getCheckout(Request $request, $hotelId)
{
...
}
从您的表单调用路由(如果您正在执行 POST 请求)当然必须进行修改,以便它包含您需要的 ID,如下所示:
<form action="{{ route('checkout', $hotelId) }}" method="POST">
推荐阅读
- c# - RemoteWebDriver 无法执行 Javascript
- javascript - JavaScript parseInt 转换
- javascript - 应该允许我触发点击事件的 Javascript 代码
- python - 如何在元组中选择元组的值?
- sockets - 侦听多宿主计算机上的端口
- pdf - 在 Google Apps 脚本中使用自定义页眉或页脚将 Google 表格导出为 PDF
- postgresql - Postgres 将整数转换为文本
- javascript - js为嵌套属性生成路径字符串
- git - 获取已排序的 Git 中最新的 n 个可达标签
- android - 如何从函数类中获取字符串?