Deleting and searching order data - crud of orders

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' ) );
}  

Related Posts


Building mini ecommerce in Laravel

Listing rows of users - crud

Adding user data - crud of users

Editing user data - crud of users

Deleting user data - crud of users

Listing rows of products - crud

Listing rows of profiles - crud

Listing rows of orders - crud

Listing rows of order items - crud