Laravel shopping cart : 电商购物车包,线上完美运行中

咱们秉承得益开源社区,也奉献开源社区的原则,咱们会陆续将正在线上使用的稳定包提交到 github 上,同时在后续的开源产品中,也会用到,你们能够放心使用。php

购物车在电商场景中基本是必须的一个模块,咱们基于 overtrue/laravel-shopping-cart 进行扩展开发。laravel

BTW: github 上已经有很是多和优秀的轮子,可是在实际应用场景中,会遇到不知足需求的状况,这个时候就须要改造下。另外貌似又见 overtrue 大神的轮子,主要 overtrue 的轮子很优秀,并且符合国人使用习惯。

主要实现了如下扩展:git

  1. 购物车数据支持 Database 存储
  2. Item 增长 Model 属性返回。由于购物车多是 SPU 或者 SKU,所以直接经过 model 属性直接返回相关对象。
  3. 支持多 Guard. 由于在 iBrand 产品有商城购物车和导购购物车。

Build StatusScrutinizer Code QualityCode CoverageBuild StatusLatest Stable VersionLatest Unstable Version

包地址: laravel-shopping-cart

Installation

composer require ibrand/laravel-shopping-cart:~1.0 -vvv
php artisan vendor:publish --provider="iBrand\Shoppingcart\ServiceProvider"

低于 Laravel5.5 版本github

config/app.php 文件中 'providers' 添加app

iBrand\Shoppingcart\ServiceProvider::class

config/app.php 文件中 'aliases' 添加composer

'Cart'=> iBrand\Shoppingcart\Facade::class

Usage

Select Storage

You can change data Storage in config/ibrand/cart.php file.ide

'storage' => \iBrand\Shoppingcart\Storage\DatabaseStorage::class,
  
'storage' => \iBrand\Shoppingcart\Storage\SessionStorage::class,

If you use Database Storage, you need to execute php artisan migrateui

Add item to cart

Add a new item.spa

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

example:code

$row = Cart::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 Cart::update(string $rawId, int $quantity);
Item Cart::update(string $rawId, array $arrtibutes);

example:

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

Get all items

Get all the items.

Collection Cart::all();

example:

$items = Cart::all();

Get item

Get the specified item.

Item Cart::get(string $rawId);

example:

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

Remove item

Remove the specified item by raw ID.

boolean Cart::remove(string $rawId);

example:

Cart::remove('8a48aa7c8e5202841ddaf767bb4d10da');

Destroy cart

Clean Shopping Cart.

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

example:

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

READ MORE: ibrandcc/laravel-shopping-cart

欢迎你们 star 和提交 issue :)

讨论交流

联系咱们