Laravel 10 Cart Methods without any Cart Package or library
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 :)