zaratedev/laravel-discounts

在 Laravel 中为 Eloquent 模型应用折扣

安装: 25

依赖: 0

建议者: 0

安全: 0

星星: 11

关注者: 2

分支: 2

开放问题: 0

类型:package

1.0.1 2020-10-13 21:40 UTC

This package is auto-updated.

Last update: 2024-09-17 07:24:21 UTC


README

GitHub Workflow Status Total Downloads License

此包受 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();

在兑换折扣后,此包初始化了两个可观察事件 redeemingredeemed,您可以根据应用程序的业务逻辑实现事件和监听器。

折扣已过期

如果尝试兑换一个过期的折扣,该包将抛出以下异常:Zaratedev\Discounts\Exceptions\DiscountExpired

贡献

欢迎拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。

请确保根据需要更新测试。

联系方式

如果您发现此包存在问题,请发送电子邮件至 zaratedev@gmail.com

许可

MIT