所以我有一个酒店预订系统,当用户点击结账时,它应该检查是否存在记录。记录由检查;如果该酒店的入住日期相同。目前,我可以选择日期和酒店,然后直接退房,无需任何验证。我在(PostsController.php(中有两个函数,我需要将它们压缩为一个,因为我发现它更容易完成,但我真的不确定如何构建它。
PostsController.hp:
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]);
}
在这里,我希望在getCheckout中使用getAvailability,也就是说,我希望getCheckout是我的主要功能。我也在履行我的职责吗?
我的建议是将业务逻辑转移到您的相关模型中。例如,您可以提取以下代码:
$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
(或类似的东西(,然后您将能够在PostsController中的getAvailability
和getCheckout
中使用此函数。