Laravel Cart
Laravel Cart
//routes
Route::get('/', function () {
return view('shop.index');
});
Route::get('/', [
]);
Route::get('signup', [
]);
Route::post('signup', [
]);
Route::get('signin', [
]);
Route::post('signin', [
]);
});
Route::get('profile', [
]);
Route::get('logout', [
]);
});
});
Route::get('add-to-cart/{id}',[
]);
Route::get('shopping-cart', [
Route::get('checkout',[
'middleware' =>'auth'
]);
Route::get('reduce/{id}',[
]);
Route::get('remove/{id}',[
'uses'=>'productController@getRemoveItem',
]);
Route::get('remove/{id}',[
'uses'=>'productController@getRemoveItem',
]);
//migrations
/**
* @return void
*/
public function up()
$table->increments('id');
$table->timestamps();
$table->string('imagePath');
$table->string('title');
$table->text('description');
$table->integer('price');
});
/**
* @return void
*/
$table->increments('id');
$table->timestamps();
$table->integer('user_id');
$table->text('cart');
});
}
//models
App\user
return $this->hasMany('App\Order');
//protected $fillable=['imagePath','title','description','price'];
];
//return $this->belongToMany('App\Order','orderline','item_id','orderinfo_id');
return $this->belongToMany('App\Order','orderline');
//protected $fillable=['imagePath','title','description','price'];
];
//return $this->belongToMany('App\Order','orderline','item_id','orderinfo_id');
return $this->belongToMany('App\Order','orderline');
return $this->belongsTo('App\User');
return $this->belongsToMany('App\Item','orderline','orderinfo_id','item_id');
//cart model
<?php
namespace App;
use Session;
class Cart
public $totalQty = 0;
public $totalPrice = 0;
if($oldCart) {
$this->items = $oldCart->items;
$this->totalQty = $oldCart->totalQty;
$this->totalPrice = $oldCart->totalPrice;
//dd($this->items);
if ($this->items){
if (array_key_exists($id, $this->items)){
$storedItem = $this->items[$id];
//$storedItem['qty'] += $item->qty;
$storedItem['qty']++;
$this->items[$id] = $storedItem;
$this->totalQty++;
$this->totalPrice += $item->sell_price;
$this->items[$id]['qty']--;
$this->items[$id]['price']-= $this->items[$id]['item']['sell_price'];
$this->totalQty --;
$this->totalPrice -= $this->items[$id]['item']['sell_price'];
if ($this->items[$id]['qty'] <= 0) {
unset($this->items[$id]);
$this->totalQty -= $this->items[$id]['qty'];
$this->totalPrice -= $this->items[$id]['price'];
unset($this->items[$id]);
//usercontroller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use Auth;
{
public function getSignup(){
return view('user.signup');
$this->validate($request, [
]);
]);
$user->save();
Auth::login($user);
return redirect()->route('user.profile');
return view('user.signin');
$this->validate($request, [
]);
return redirect()->route('user.profile');
}else{
return redirect()->back();
};
//$orders = Auth::user()->with('orders')->get();
$orders = Auth::user()->orders;
//dd($orders);
$orders->transform(function($order, $key){
$order->cart = unserialize($order->cart);
return $order;
});
//dd($orders);
return view('user.profile',compact('orders'));
Auth::logout();
return redirect()->route('product.index');
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Product;
use Session;
use App\Cart;
use App\Order;
use App\Customer;
use Auth;
use App\Item;
use DB;
$products = \App\Product::all();
return view('shop.index',compact('products'));
$product = Product::find($id);
/*
if (Session::has('cart')){
$oldCart = Session::get('cart');
$cart['items'][$id] = $product->item_id;
$cart['items']['sell_price'] = $product->sell_price;
$cart['items']['qty'] = 1;
$cart = array_merge($oldCart,$cart);
Session:push('cart',$cart);
}*/
/*else
Session::put('cart',$cart);*/
//dd(Session::has('cart'));
//dd($cart);
//dd($oldCart);
$cart->add($product, $product->item_id);
$request->session()->put('cart', $cart);
Session::put('cart', $cart);
$request->session()->save();
//dd(Session::all());
//return redirect()->route('product.index');
return redirect()->route('product.index');
if (!Session::has('cart')) {
return view('shop.shopping-cart');
$oldCart = Session::get('cart');
}
public function getSession(){
Session::flush();
if (!Session::has('cart')) {
return redirect()->route('product.shoppingCart');
$oldCart = Session::get('cart');
try {
DB::beginTransaction();
try {
$order->cart = serialize($cart);
Auth::user()->orders()->save($order);
Session::forget('cart');
return redirect()->route('product.index')->with('success','Successfully
Purchased Your Products!!!');
}
public function getReduceByOne($id){
$cart->reduceByOne($id);
if (count($cart->items) > 0) {
Session::put('cart',$cart);
}else{
Session::forget('cart');
return redirect()->route('product.shoppingCart');
$cart->removeItem($id);
if (count($cart->items) > 0) {
Session::put('cart',$cart);
}else{
Session::forget('cart');
return redirect()->route('product.shoppingCart');