zaratedev / laravel-discounts
在 Laravel 中为 Eloquent 模型应用折扣
Requires
- php: ^7.1
- illuminate/database: ~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0|^6.0
- phpunit/phpunit: ^7.0|^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-17 07:24:21 UTC
README
此包受 Marcel Pociot 的 Laravel Vouchers(https://github.com/beyondcode/laravel-vouchers)启发。
在 Laravel 中为 Eloquent 模型应用折扣,可以在需要将折扣与特定金额关联到 Eloquent 模型时使用。
任何模型
<?php use Zaratedev\Discounts\Traits\Discountable; class Item extends Model { use Discountable; } ... $item = Item::find(1); $item->createDiscount(100);
需求
Laravel Discounts 包需要 PHP >= 7.2 和 Laravel >= 5.8。
安装
您可以通过 composer 安装此包
composer require zaratedev/laravel-discounts
包将自动注册自己。
迁移
您可以发布迁移
php artisan vendor:publish --provider="Zaratedev\Discounts\DiscountsServiceProvider" --tag="migrations"
执行命令
php artisan migrate
用法
此包的基本概念是创建与特定模型关联的折扣。例如,您有一个订阅应用程序,前三个月必须对订阅价格应用折扣。
将 Zaratedev\Discounts\Traits\Discountable 特性添加到您想要与折扣一起使用的 Eloquent 模型中。
Zaratedev\Discounts\Traits\Discountable 特性可以在数据库中兑换折扣。
创建折扣
使用外观
您可以使用 Discounts 外观创建一个或多个折扣
$subscription = Subscription::find(1); $discounts = Discounts::create($subscription, 3, 100);
使用 Eloquent 模型
$subscription = Subscription::find(1); // Returns an array of Discounts $discounts = $subscription->createDiscounts(3, 100); // Return a Discount model $discount = $subscription->createDiscount(100);
具有到期日期的折扣
您可以创建具有到期日期的折扣。
$subscription = Subscription::find(1); $subscription->createDiscounts(3, 100, today()->addMonths(4))
兑换折扣
当折扣已被使用时,您可以兑换折扣。
$discount->redeem();
在兑换折扣后,此包初始化了两个可观察事件 redeeming 和 redeemed,您可以根据应用程序的业务逻辑实现事件和监听器。
折扣已过期
如果尝试兑换一个过期的折扣,该包将抛出以下异常:Zaratedev\Discounts\Exceptions\DiscountExpired。
贡献
欢迎拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
请确保根据需要更新测试。
联系方式
如果您发现此包存在问题,请发送电子邮件至 zaratedev@gmail.com