• This repository has been archived on 11/Jun/2021
  • Stars
    star
    392
  • Rank 109,735 (Top 3 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 9 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🛒 Shopping cart for Laravel Application.

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 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

More Repositories

1

pinyin

🇨🇳 基于词库的中文转拼音优质解决方案
PHP
4,296
star
2

share.js

一键分享到微博、QQ空间、QQ好友、微信、腾讯微博、豆瓣、Facebook、Twitter、Linkedin、Google+、点点等
JavaScript
3,691
star
3

easy-sms

📲 一款满足你的多种发送需求的短信发送组件
PHP
3,127
star
4

laravel-wechat

微信 SDK for Laravel, 基于 overtrue/wechat
PHP
2,865
star
5

socialite

Socialite is an OAuth2 Authentication tool. It is inspired by laravel/socialite, you can easily use it without Laravel.
PHP
1,294
star
6

laravel-lang

🌏 75 languages support for Laravel application.
PHP
1,271
star
7

laravel-follow

❤️ This package helps you to add user based follow system to your model.
PHP
1,183
star
8

api.yike.io

一刻社区后端 API 源码
PHP
1,021
star
9

phplint

🐛 A tool that can speed up linting of php files by running several lint processes at once.
PHP
981
star
10

yike.io

一刻社区前端源码
Vue
658
star
11

laravel-pinyin

🇨🇳 Chinese to Pinyin translator for Laravel 5 / Lumen
PHP
529
star
12

chinese-calendar

📅 中国农历(阴历)与阳历(公历)转换与查询工具
PHP
521
star
13

laravel-versionable

⏱️Make Laravel model versionable
PHP
510
star
14

vue-avatar-cropper

👧 A simple and elegant avatar cropping and upload plugin.
JavaScript
508
star
15

laravel-filesystem-qiniu

A Qiniu Storage filesystem for Laravel
PHP
471
star
16

laravel-like

👍 User-like features for Laravel Application.
PHP
467
star
17

laravel-favorite

❤️ User favorite feature for Laravel Application.
PHP
422
star
18

laravel-query-logger

📝 A dev tool to log all queries for laravel application.
PHP
408
star
19

laravel-ueditor

UEditor integration for Laravel.
JavaScript
390
star
20

laravel-socialite

:octocat: Social OAuth Authentication for Laravel 5. drivers: facebook, github, google, linkedin, weibo, qq, wechat and douban
PHP
339
star
21

latest-laravel

【不再更新】这些东西本不应该存在。
Shell
282
star
22

weibo-dogs-killer

一段屏蔽 HWB(微博监督员) 的 js 小脚本
275
star
23

wisteria

Beautiful document tool for your project.
Blade
255
star
24

flysystem-qiniu

💾 Flysystem adapter for the Qiniu storage.
PHP
221
star
25

package-builder

📦 A composer package builder.
PHP
199
star
26

weather

🌈 基于高德开放平台接口的 PHP 天气信息组件。
PHP
173
star
27

laravel-subscribe

📧 User Subscribe/Unsubscribe features for Laravel Application.
PHP
170
star
28

yike

PHP
164
star
29

laravel-emoji

😄 This package assist you in getting started with emoji easily.
PHP
151
star
30

vscode-miniapp-helper

微信小程序开发助手 for VSCode
JavaScript
150
star
31

laravel-skeleton

Laravel Application skeleton for me.
PHP
142
star
32

yaf-skeleton

The Yaf testable skeleton and composer supported.
PHP
141
star
33

laravel-uploader

🌴 An upload component for Laravel.
PHP
135
star
34

http

🌵 A simple http client wrapper.
PHP
126
star
35

writor

基于 Laravel 4 开发的博客系统
JavaScript
125
star
36

pinyin-resources

汉字拼音相关参考资料
123
star
37

laravel-vote

⬆️ ⬇️ User vote system for Laravel Application.
PHP
108
star
38

validation

Laravel Validation 简化无依赖版
PHP
100
star
39

bootstrap-theme-slim

纤细风格的bootstrap主题
HTML
92
star
40

city.js

城市选择控件
92
star
41

laravel-payment

Omnipay ServiceProvider for Laravel.
PHP
91
star
42

laravel-passport-cache-token

Make laravel/passport token cacheable.
PHP
89
star
43

laravel-filesystem-cos

Tencent Cloud COS storage for Laravel based on overtrue/flysystem-cos.
PHP
89
star
44

php-opencc

中文简繁转换,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)。
PHP
75
star
45

blog

安正超博客
Less
74
star
46

flysystem-cos

💾 Flysystem adapter for the Qcloud COS storage.
PHP
74
star
47

rester

基于 Slim+Eloquent 的 RESTful API 框架
PHP
71
star
48

laravel-mail-aliyun

📧 Aliyun DrirectMail Transport for Laravel Application.
PHP
71
star
49

laravel-youzan

【停止维护】Youzan wrapper for Laravel
PHP
59
star
50

websocket

A PHP implementation of WebSocket.
PHP
56
star
51

laravel-options

Global options module for Laravel application.
PHP
51
star
52

laravel.xyz

Source code of https://laravel.xyz
Vue
50
star
53

json-viewer

A tool for make JSON view in browser.
JavaScript
49
star
54

building-with-tailwindcss

HTML
45
star
55

php-package

A PHP package template repository.
45
star
56

laravel-qcloud-content-audit

腾讯云内容安全(文字图片内容审核)服务
PHP
44
star
57

phpmd-rulesets

PHP_MD 规则
42
star
58

sketch-data-cn

为 Sketch 准备的模拟数据中文版,包含:中文姓名,手机号,省份,城市,地区,公司名,银行名,星期几,详情地址,邮编,邮箱,颜色,广告词等。
41
star
59

qcloud-cos-client

Tencent COS Client
PHP
40
star
60

validator.js

一个类似laravel的js验证模块.
JavaScript
39
star
61

translator

PHP多语言支持工具
PHP
38
star
62

laravel-payable

Payment system for Laravel.
PHP
36
star
63

laravel-package

Laravel package template
PHP
35
star
64

laravel-revaluation

Laravel 5 model revaluation helper.
PHP
31
star
65

laravel-easy-sms

overtrue/easy-sms service provider for Laravel.
PHP
26
star
66

laravel-saml

SAML toolkit for Laravel based on OneLogin's SAML PHP Toolkit.
PHP
21
star
67

sendcloud

SendCloud Mail SDK
PHP
20
star
68

laravel-sendcloud

SendCloud Mail SDK for Laravel.
PHP
20
star
69

latest-lumen

【不再更新】这些东西本不应该存在。
Shell
19
star
70

laravel-stateless-session

A lightweight middleware to make api routing session capable.
PHP
18
star
71

laravel-single-session

A plugin provide single session authentication for Laravel 5.
PHP
17
star
72

php-multi-process-runner

基于PHP拓展PCNTL的多进程执行工具
PHP
17
star
73

laravel-summernote

Summernote editor integration for Laravel 5.
JavaScript
16
star
74

laravel-passport-cache-client

Make laravel/passport client cacheable.
PHP
16
star
75

laravel-qcloud-federation-token

QCloud COS FederationToken generator for Laravel.
PHP
16
star
76

cuttle

📃 A multi-module log wrapper.
PHP
15
star
77

stuq-laravel-course

StuQ小班课|Laravel实战经验分享及PHP后端编程思想
PHP
13
star
78

laravel.so

Source Code of http://laravel.so (old)
PHP
13
star
79

double-array-trie

PHP
12
star
80

overtrue

https://overtrue.me
12
star
81

bash-color

Generate command line colorized text.
PHP
12
star
82

pinyin-dictionary-maker

📇 Dictionary make of overtrue/pinyin.
PHP
12
star
83

relocator.js

relocate images to fit image box
JavaScript
11
star
84

laravel-open-telemetry

This package provides a simple way to add OpenTelemetry to your Laravel application.
PHP
11
star
85

youzan

【不再维护】Youzan SDK.
PHP
10
star
86

wisteria-skeleton

The skeleton of Wisteria.
PHP
10
star
87

wp-cn-excerpt

wordpress中文摘要插件
PHP
10
star
88

laravel-custom-log

📃 Make Laravel Log great again.
PHP
9
star
89

laravel-qcloud-captcha

QCloud Captcha service validator for Laravel.
PHP
7
star
90

vue-avatar-cropper-demo

Created with CodeSandbox
Vue
7
star
91

string2pinyin.sinaapp.com

PHP
3
star
92

nuxt-dashboard

CSS
3
star
93

wp-auto-top

WordPress 返回顶部插件
PHP
2
star
94

redius.xyz

wip
2
star
95

overtrue.github.io

HTML
2
star
96

username-blacklist

PHP
2
star
97

pinyin.rs

2
star
98

easywechat-theme

Vue
2
star
99

dex-swap-test

JavaScript
1
star
100

phplint-test

PHP
1
star