overtrue / laravel-shopping-cart
Shopping cart for Laravel Application.
Installs: 16 147
Dependents: 0
Suggesters: 0
Security: 0
Stars: 380
Watchers: 28
Forks: 77
Open Issues: 7
Requires
- php: >=5.5
Requires (Dev)
- illuminate/session: 5.8.* || ~6.0
- mockery/mockery: ~1.2
- phpunit/phpunit: ~7.5
README
Shopping cart for Laravel Application.
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 before you add items to cart.
Cart ShoppingCart::associate(string $modelName);
example:
ShoppingCart::associate('App\Models\Product'); ShoppingCart::add(37, 'Item name', 5, 100.00, ['color' => 'red', 'size' => 'M']); $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 });
PHP 扩展包开发
想知道如何从零开始构建 PHP 扩展包?
请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— 《PHP 扩展包实战教程 - 从入门到发布》
License
MIT