jackfinal/laravel-shopping-cart

Laravel应用购物车。

v1.0.0 2024-07-30 01:30 UTC

This package is not auto-updated.

Last update: 2024-09-25 01:42:24 UTC


README

Laravel应用购物车。

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

NOTICE

感谢 overtrue 添加缓存驱动存储 CartCache::class 和配置以配置驱动类型。Config/cart.php 默认设置为缓存

php artisan vendor:publish --provider="Overtrue\LaravelShoppingCart\ServiceProvider"

return [

//默认存储渠道,session,cache
'default'=> 'cache'

];

use 

ShoppingCart::setName($user_id);

# Installation

$ composer require "jackfinal/laravel-shopping-cart:~1.0"


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

"require": {

"jackfinal/laravel-shopping-cart": "~1.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();// 获取 __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']); // 或者仅更新数量 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();// 或者 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(); // 或者 $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']); $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.](https://laravel.net.cn/docs/5.0/collections)

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 扩展包实战教程 - 从入门到发布》](https://learnku.com/courses/creating-package)

# License

MIT