在我的餐馆订购网站中,我的orderitems
表有一个外键order_id
。问题是订单只有在用户确认他们的orderitems
之后才存在,这意味着我的order_id
值将不引用任何内容,直到订单被记录。我做了一个临时修复,但非常糟糕。我如何解决这个问题?
我的订单控制器. php
public function storeOrderitem(Request $request, Menu $menu)
$order_id = rand(1, 1000);
$attributes = $request->validate([
'quantity' => 'integer|min:1',
]);
$orderitem = new Orderitem;
$orderitem->order_id = $order_id;
$orderitem->menu_id = $menu->id;
$orderitem->quantity = $attributes['quantity'];
$orderitem->save();
$orderitems = Orderitem::with('menu')->get();
session(['orderitems' => $orderitems]);
return redirect('/');
}
public function show(Menu $menu)
{
return view('pages.order', [
'menu' => $menu,
]);
}
我的菜单控制器. php
public function show(Menu $menu)//: Response
{
//
//dd($menu);
$orderitems = session('orderitems');
return view('pages/landing-page', [
'menus' => Menu::latest()->get(),
'orderitems' => $orderitems
]) ;
}
这是我的观点,mainpage.blade.php
@foreach($orderitems as $orderitem)
<li class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">{{ $orderitem->menu->item_name }}<span class="ml-32">{{ $orderitem->menu->price }}</span></li>
@endforeach
如果你需要看其他的文件,就告诉我
1条答案
按热度按时间q3qa4bjr1#
问题是没有订单,为什么需要存储订单项目?
因此,我认为Order和OrderItem模型应该一起更新,要么在创建订单之后更新订单关系,要么使用模型观察器创建OrderItems。
因此,在我看来,它将假设以下是您的模型的结构
以及
订单项将在订单创建后立即更新,要在购物车中显示,您可以将选择保留在会话本身或缓存或任何临时内存/数据库表中,一旦取消或订单履行或具有一定时间限制,这些表将被清除。