Step 01: In OrderController, adding destroy() method
public function destroy( Order $order ) { $order->order_items->each->delete(); $order->delete(); $redirectTo = session()->get('submit_redirect'); if( !empty( $redirectTo ) ) { return redirect(url('').$redirectTo)->with( 'success', 'Order deleted successfully' ); } return redirect()->route( 'orders.index' )->with( 'success', 'Order deleted successfully' ); }
Step 02: So to save this path to session variable we need to change index() method like below
public function index( Request $request ) { $meta_title = 'All Orders'; //used in delete() method for correct page redirection session('submit_redirect', ''); if($request->query->count() > 0) { // if query string has any value count will be greater than 0 session()->put('submit_redirect', $_SERVER['REQUEST_URI']); //getting current query string from url and saving it to session variable } $query = Order::query(); $orders = $query->with('order_items')->orderBy( 'id', 'desc' )->paginate( 10 )->withQueryString(); //dd($orders); return view( 'orders.list', compact( 'meta_title','orders' ) ); }
Step 03: Searching order data with order id. First adding following html on top of table element inside resources/views/orders/list.blade.php
<div class="row"> <div class="col-md-4"> <h2 class="">All Orders</h2> </div> <div class="col-md-4"> <div class=""> <form method="GET" action="{{ route('orders.index' ) }}"> <input type="text" name="search_global" class="form-control" placeholder="Filter by id" value="{{ request('search_global', '') }}"> </form> </div> </div> <div class="col-md-4 pt-1 "> <a class="btn btn-sm btn-primary float-end" href="{{ route('orders.create') }}"> Add Order</a> </div> </div>
Step 04: Then back in OrderController.php changing index() method like below
public function index( Request $request ) { $meta_title = 'All Orders'; //used in delete() method for correct page redirection session('submit_redirect', ''); if($request->query->count() > 0) { // if query string has any value count will be greater than 0 session()->put('submit_redirect', $_SERVER['REQUEST_URI']); //getting current query string from url and saving it to session variable } $query = Order::query(); $keyword = $request->query( 'search_global' ) ?? ''; // eloquent conditional clause $query->when( $keyword , function ($query) use ($keyword) { $query->where( 'id', $keyword ); }); $orders = $query->with('order_items')->orderBy( 'id', 'desc' )->paginate( 10 )->withQueryString(); //dd($orders); return view( 'orders.list', compact( 'meta_title','orders' ) ); }