如何在Laravel 7中按用户更新订单状态
我正在制作一个电子商务网站,并试图为普通用户/客户完成订单管理。我想允许客户取消订单,如果状态仍然是挂起。我有一个带有以下内容的如何在Laravel 7中按用户更新订单状态,laravel,e-commerce,crud,Laravel,E Commerce,Crud,我正在制作一个电子商务网站,并试图为普通用户/客户完成订单管理。我想允许客户取消订单,如果状态仍然是挂起。我有一个带有以下内容的OrderHistoryController: public function cancel(Order $order) { $order->status = 'canceled'; $order->save(); //check if all suborders are canceled $pendingSubOrders
OrderHistoryController
:
public function cancel(Order $order)
{
$order->status = 'canceled';
$order->save();
//check if all suborders are canceled
$pendingSubOrders = $order->subOrders()->where('status','!=', 'canceled')->count();
if($pendingSubOrders == 0) {
$order->order()->update(['status'=>'canceled']);
}
return redirect('/order-history/{order}')->withMessage('Order was canceled');
}
我在我的web.php中创建了一条路线:
Route::get('/order-history/cancel', 'OrderHistoryController@cancel')->name('order-history.cancel')->middleware('auth');
我的刀片文件有一个按钮:
@if ($order->status == 'pending')
<button type="submit" class="default-btn floatright"><a href="{{route('order-history.cancel', $order)}}"> Cancel Order</a></button>
@endif
有什么问题吗?或者我还有其他方法可以做到这一点吗?任何建议都将不胜感激。提前谢谢 您的路线中缺少订单id,因此请更改:
Route::get('/order-history/cancel', 'OrderHistoryController@cancel')->name('order-history.cancel')->middleware('auth');
到
Route::get('/order-history/cancel', 'OrderHistoryController@cancel')->name('order-history.cancel')->middleware('auth');
Route::get('/order-history/cancel/{order}', 'OrderHistoryController@cancel')->name('order-history.cancel')->middleware('auth');