src/Traits/ShopCartTrait.php
public function add($item, $quantity = 1, $quantityReset = false)
    {
        if (!is_array($item) && !$item->isShoppable) return;
        // Get item
        $cartItem = $this->getItem(is_array($item) ? $item['sku'] : $item->sku);
        // Add new or sum quantity
        if (empty($cartItem)) {
            $reflection = null;
            if (is_object($item)) {
                $reflection = new \ReflectionClass($item);
            }
            $cartItem = call_user_func( Config::get('shop.item') . '::create', [
                'user_id'       => $this->user->shopId,
                'cart_id'       => $this->attributes['id'],
                'sku'           => is_array($item) ? $item['sku'] : $item->sku,
                'price'         => is_array($item) ? $item['price'] : $item->price,
                'tax'           => is_array($item) 
                                    ? (array_key_exists('tax', $item)
                                        ?   $item['tax']
                                        :   0
                                    ) 
                                    : (isset($item->tax) && !empty($item->tax)
                                        ?   $item->tax
                                        :   0
                                    ),
                'shipping'      => is_array($item) 
                                    ? (array_key_exists('shipping', $item)
                                        ?   $item['shipping']
                                        :   0
                                    ) 
                                    : (isset($item->shipping) && !empty($item->shipping)
                                        ?   $item->shipping
                                        :   0
                                    ),
                'currency'      => Config::get('shop.currency'),
                'quantity'      => $quantity,
                'class'         => is_array($item) ? null : $reflection->getName(),
                'reference_id'  => is_array($item) ? null : $item->shopId,
            ]);
        } else {
            $cartItem->quantity = $quantityReset 
                ? $quantity 
                : $cartItem->quantity + $quantity;
            $cartItem->save();
        }
        $this->resetCalculations();
        return $this;
    }
public function add($item, $quantity = 1, $quantityReset = false)
    {
        if (!is_array($item) && !$item->isShoppable) return;
        // Get item
        $cartItem = $this->getItem(is_array($item) ? $item['sku'] : $item->sku);
        // Add new or sum quantity
        if (empty($cartItem)) {
            $reflection = null;
            if (is_object($item)) {
                $reflection = new \ReflectionClass($item);
            }
            $cartItem = call_user_func( Config::get('shop.item') . '::create', [
                'user_id'       => $this->user->shopId,
                'cart_id'       => $this->attributes['id'],
                'sku'           => is_array($item) ? $item['sku'] : $item->sku,
                'price'         => is_array($item) ? $item['price'] : $item->price,
                'tax'           => is_array($item) 
                                    ? (array_key_exists('tax', $item)
                                        ?   $item['tax']
                                        :   0
                                    ) 
                                    : (isset($item->tax) && !empty($item->tax)
                                        ?   $item->tax
                                        :   0
                                    ),
                'shipping'      => is_array($item) 
                                    ? (array_key_exists('shipping', $item)
                                        ?   $item['shipping']
                                        :   0
                                    ) 
                                    : (isset($item->shipping) && !empty($item->shipping)
                                        ?   $item->shipping
                                        :   0
                                    ),
                'currency'      => Config::get('shop.currency'),
                'quantity'      => $quantity,
                'class'         => is_array($item) ? null : $reflection->getName(),
                'reference_id'  => is_array($item) ? null : $item->shopId,
            ]);
        } else {
            $cartItem->quantity = $quantityReset 
                ? $quantity 
                : $cartItem->quantity + $quantity;
            $cartItem->save();
        }
        $this->resetCalculations();
        return $this;
    }
public function add ( $ item , $ quantity = 1 , $ quantityReset = false ) { if ( ! is_array ( $ item ) && ! $ item -> isShoppable ) return ; // Get item $ cartItem = $ this -> getItem ( is_array ( $ item ) ? $ item [ 'sku' ] : $ item -> sku ) ; // Add new or sum quantity if ( empty ( $ cartItem ) ) { $ reflection = null ; if ( is_object ( $ item ) ) { $ reflection = new \ ReflectionClass ( $ item ) ; } $ cartItem = call_user_func ( Config :: get ( 'shop.item' ) . '::create' , [ 'user_id' => $ this -> user -> shopId , 'cart_id' => $ this -> attributes [ 'id' ] , 'sku' => is_array ( $ item ) ? $ item [ 'sku' ] : $ item -> sku , 'price' => is_array ( $ item ) ? $ item [ 'price' ] : $ item -> price , 'tax' => is_array ( $ item ) ? ( array_key_exists ( 'tax' , $ item ) ? $ item [ 'tax' ] : 0 ) : ( isset ( $ item -> tax ) && ! empty ( $ item -> tax ) ? $ item -> tax : 0 ) , 'shipping' => is_array ( $ item ) ? ( array_key_exists ( 'shipping' , $ item ) ? $ item [ 'shipping' ] : 0 ) : ( isset ( $ item -> shipping ) && ! empty ( $ item -> shipping ) ? $ item -> shipping : 0 ) , 'currency' => Config :: get ( 'shop.currency' ) , 'quantity' => $ quantity , 'class' => is_array ( $ item ) ? null : $ reflection -> getName ( ) , 'reference_id' => is_array ( $ item ) ? null : $ item -> shopId , ] ) ; } else { $ cartItem -> quantity = $ quantityReset ? $ quantity : $ cartItem -> quantity + $ quantity ; $ cartItem -> save ( ) ; } $ this -> resetCalculations ( ) ; return $ this ; }
Adds item to cart.

@param mixed $item     Item to add, can be an Store Item, a Model with ShopItemTrait or an array.
@param int   $quantity Item quantity in cart.
Adds item to cart .