104. 为模型增加凭证以及凭证兑换——beyondcode/laravel-vouchers

为模型增加凭证以及凭证兑换—— beyondcode/laravel-vouchers

你应该遇到过关于凭证,票据,入场券相关的需求,需要给某个模型创建一些凭证,有个凭证兑换码,以及过期时间,用户可以输入兑换码,输入正确的用户就可以完成凭证的兑换。

今天介绍的这个扩展包 github.com/beyondcode/laravel-vouc... 就是提供了这样的功能。

安装

$ composer require beyondcode/laravel-vouchers

beyondcode/laravel-vouchers

$ php artisan vendor:publish --provider="BeyondCode\Vouchers\VouchersServiceProvider"

这里文档有点问题,需要增双引号。

执行 migrate。

创建了两张数据表:

  • vouchers —— 凭证表;
  • user_voucher —— 用户与凭证的关系表。

使用

我这里准备好了一个话题模型,并填充了一些数据。类似的业务可能是,所有的话题都不是公开的,必须凭兑换码进入,每个兑换码只能使用一次。

创建 Voucher

app/Topic.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use BeyondCode\Vouchers\Traits\HasVouchers;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class Topic extends Model
{
    use HasVouchers;

    protected $fillable = [
        'title', 'content', 'user_id'
    ];

    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }
}

为模型增加凭证以及凭证兑换——beyondcode/laravel-vouchers

当然还可以增加一些自定义的额外数据给凭证:

$topic->createVoucher(['foo' => 'bar']);

兑换 Voucher

接着来兑换凭证。先修改一下 User 模型, 增加 Triat BeyondCode\Vouchers\Traits\CanRedeemVouchers

$voucher = User::first()->redeemCode('93XK-YASE');
$voucher->data->get('foo');

为模型增加凭证以及凭证兑换——beyondcode/laravel-vouchers

通过 $voucher->model; 就可以获取到凭证对应的模型。

另一种兑换的方式是通过 redeemVoucher

$voucher = Topic::first()->createVoucher();
User::first()->redeemVoucher($voucher);

添加过期时间

凭证还可以添加过期时间

Topic::first()->createVouchers(2, [], today()->subDays(1));
User::first()->redeemCode('EBRY-ZVST');

104. 为模型增加凭证以及凭证兑换——beyondcode/laravel-vouchers

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~