Laravel 10 Cart Methods without any Cart Package or library

Umer Ghouri
2 min readSep 23, 2023

--

Lets see how we make cart for our webistes without any package like darryldecode/laravelshoppingcart

here it is add to cart method code. you can use this according to your requirement

public function addToCart(Request $request)
{


$product = Product::findOrFail($request->product_id);

$cart = $request->session()->get('cart',[]);

if(isset($cart[$product->id])) {
$cart[$product->id]['quantity']++;
} else {
$cart[$product->id] = [
"title" => $product->title,
"quantity" => $request->quantity,
"discount_price" => $product->discount_price,
"strike_price" => $product->strike_price,
"image" => $product->images
];
}

$request->session()->put('cart', $cart);

$cart_products = collect(request()->session()->get('cart'));
$cart_total = 0;
foreach ($cart_products as $key => $product) {

$cart_total+= $product['quantity'] * $product['discount_price'];
}

$renderHTML = view('frontend.cart.mini-cart-render',compact('cart_products','cart_total'))->render();
$total_products_count = count(request()->session()->get('cart'));
return response()->json(['renderHTML'=>$renderHTML,'total_products_count'=>$total_products_count],200);
}

now see update cart method

public function update(Request $request)
{

if(isset($request->product_id) && isset($request->quantity))
{
$cart = $request->session()->get('cart');

$cart[$request->product_id]['quantity'] = $request->quantity;
$request->session()->put('cart', $cart);

$update_amount_of_product = $cart[$request->product_id]['quantity'] * $cart[$request->product_id]['discount_price'];

$cart_products = collect(request()->session()->get('cart'));
$cart_total = 0;
if(session('cart')){
foreach ($cart_products as $key => $product) {

$cart_total+= $product['quantity'] * $product['discount_price'];
}
}

return response()->json(['success'=>true,'update_amount_of_product'=>$update_amount_of_product,'cart_total'=>$cart_total]);
}
}

now show cart method to display cart on cart page

public function showCart()
{
$cart_products = collect(request()->session()->get('cart'));

$cart_total = 0;
if(session('cart')){
foreach ($cart_products as $key => $product) {

$cart_total+= $product['quantity'] * $product['discount_price'];
}
}

/*dd($cart_total);*/
$products = Product::has('images')->with('images')->latest()->limit(10)->get();
$total_products_count = request()->session()->get('cart') ? count(request()->session()->get('cart')) : 0;
return view('frontend.cart.cart',compact('products','cart_products','cart_total','total_products_count'));
//return view('frontend.cart.mini-cart-render',compact('cart_products'));
}

now see delete cart product method

public function destroy(Request $request)
{
$id = $request->product_id;

$cart = $request->session()->get('cart');
if (isset($cart[$id])) {

unset($cart[$id]);
}
$request->session()->put('cart',$cart);
}

you can modify these according your own requirements

you can email me on this umerfayyaz500@gmail.com if you need any help regarding this

Thanks for reading… keep work hard :)

--

--

Umer Ghouri

A competent PHP/Laravel developer with extensive experience in the layout, design, and coding of websites specifically in PHP