🚗 Shopping cart for Laravel Application.
PHP
Switch branches/tags
Clone or download
Latest commit ba03d24 Apr 26, 2018
Permalink
Failed to load latest commit information.
src/LaravelShoppingCart fix 7 Apr 26, 2018
tests Fix tests. Jul 2, 2017
.gitattributes Ignore. Aug 14, 2015
.gitignore Remove composer.lock from .gitignore Mar 23, 2016
.php_cs Service Provider Alias & CS. Jun 15, 2016
.scrutinizer.yml Update Dependency Jun 1, 2015
.travis.yml No hhvm. Jul 2, 2017
LICENSE Initial commit May 31, 2015
README.md fix 7 Apr 26, 2018
composer.json Auto discovery. Jul 2, 2017
composer.lock PHP 5.5 Jun 15, 2016
phpunit.php CS. Aug 14, 2015
phpunit.xml 补充单元测试 Jun 1, 2015

README.md

Laravel Shopping Cart

Shopping cart for Laravel Application.

Build Status Latest Stable Version Latest Unstable Version Scrutinizer Code Quality Code Coverage Total Downloads License

Installation

$ composer require "overtrue/laravel-shopping-cart:~2.0"

or add the following line to your project's composer.json:

"require": {
    "overtrue/laravel-shopping-cart": "~2.0"
}

then

$ composer update

After completion of the above, add the follow line to the section providers of config/app.php:

Overtrue\LaravelShoppingCart\ServiceProvider::class,

And add the follow line to the section aliases:

'ShoppingCart'      => Overtrue\LaravelShoppingCart\Facade::class,

Usage

Add item to cart

Add a new item.

Item | null ShoppingCart::add(
                    string | int $id,
                    string $name,
                    int $quantity,
                    int | float $price
                    [, array $attributes = []]
                 );

example:

$row = ShoppingCart::add(37, 'Item name', 5, 100.00, ['color' => 'red', 'size' => 'M']);
// Item:
//    id       => 37
//    name     => 'Item name'
//    qty      => 5
//    price    => 100.00
//    color    => 'red'
//    size     => 'M'
//    total    => 500.00
//    __raw_id => '8a48aa7c8e5202841ddaf767bb4d10da'
$rawId = $row->rawId();// get __raw_id
$row->qty; // 5
...

Update item

Update the specified item.

Item ShoppingCart::update(string $rawId, int $quantity);
Item ShoppingCart::update(string $rawId, array $arrtibutes);

example:

ShoppingCart::update('8a48aa7c8e5202841ddaf767bb4d10da', ['name' => 'New item name']);
// or only update quantity
ShoppingCart::update('8a48aa7c8e5202841ddaf767bb4d10da', 5);

Get all items

Get all the items.

Collection ShoppingCart::all();

example:

$items = ShoppingCart::all();

Get item

Get the specified item.

Item ShoppingCart::get(string $rawId);

example:

$item = ShoppingCart::get('8a48aa7c8e5202841ddaf767bb4d10da');

Remove item

Remove the specified item by raw ID.

boolean ShoppingCart::remove(string $rawId);

example:

ShoppingCart::remove('8a48aa7c8e5202841ddaf767bb4d10da');

Destroy cart

Clean Shopping Cart.

boolean ShoppingCart::destroy();
boolean ShoppingCart::clean(); // alias of destroy();

example:

ShoppingCart::destroy();// or ShoppingCart::clean();

Total price

Returns the total of all items.

int | float ShoppingCart::total(); // alias of totalPrice();
int | float ShoppingCart::totalPrice();

example:

$total = ShoppingCart::total();
// or
$total = ShoppingCart::totalPrice();

Count rows

Return the number of rows.

int ShoppingCart::countRows();

example:

ShoppingCart::add(37, 'Item name', 5, 100.00, ['color' => 'red', 'size' => 'M']);
ShoppingCart::add(37, 'Item name', 1, 100.00, ['color' => 'red', 'size' => 'M']);
ShoppingCart::add(37, 'Item name', 5, 100.00, ['color' => 'red', 'size' => 'M']);
ShoppingCart::add(127, 'foobar', 15, 100.00, ['color' => 'green', 'size' => 'S']);
$rows = ShoppingCart::countRows(); // 2

Count quantity

Returns the quantity of all items

int ShoppingCart::count($totalItems = true);

$totalItems : When false,will return the number of rows.

example:

ShoppingCart::add(37, 'Item name', 5, 100.00, ['color' => 'red', 'size' => 'M']);
ShoppingCart::add(37, 'Item name', 1, 100.00, ['color' => 'red', 'size' => 'M']);
ShoppingCart::add(37, 'Item name', 5, 100.00, ['color' => 'red', 'size' => 'M']);
$count = ShoppingCart::count(); // 11 (5+1+5)

Search items

Search items by property.

Collection ShoppingCart::search(array $conditions);

example:

$items = ShoppingCart::search(['color' => 'red']);
$items = ShoppingCart::search(['name' => 'Item name']);
$items = ShoppingCart::search(['qty' => 10]);

Check empty

bool ShoppingCart::isEmpty();

Specifies the associated model

Specifies the associated model of item.

Cart ShoppingCart::associate(string $modelName);

example:

ShoppingCart::associate('App\Models\Product');
$item = ShoppingCart::get('8a48aa7c8e5202841ddaf767bb4d10da');
$item->product->name; // $item->product is instanceof 'App\Models\Product'

The Collection And Item

Collection and Overtrue\LaravelShoppingCart\Item are instanceof Illuminate\Support\Collection, Usage Refer to:Collections - Laravel doc.

properties of Overtrue\LaravelShoppingCart\Item:

  • id - your goods item ID.
  • name - Name of item.
  • qty - Quantity of item.
  • price - Unit price of item.
  • total - Total price of item.
  • __raw_id - Unique ID of row.
  • __model - Name of item associated Model.
  • ... custom attributes.

And methods:

  • rawId() - Return the raw ID of item.

Events

Event Name Parameters
shopping_cart.adding ($attributes, $cart);
shopping_cart.added ($attributes, $cart);
shopping_cart.updating ($row, $cart);
shopping_cart.updated ($row, $cart);
shopping_cart.removing ($row, $cart);
shopping_cart.removed ($row, $cart);
shopping_cart.destroying ($cart);
shopping_cart.destroyed ($cart);

You can easily handle these events, for example:

Event::listen('shopping_cart.adding', function($attributes, $cart){
    // code
});

License

MIT