为每个客户/用户生成唯一的凭证/代码

时间:2018-10-21 05:55:12

标签: database laravel database-design data-modeling laravel-5.6

我尝试建立像 grou 这样的网站,该网站可以在商家中销售某些商品的代金券。

customeruser可以根据他们的vouchers在离线商店(或商家)购买vouchers兑现已经买了。

我对有关兑换凭证的逻辑或数据库设计感到困惑。我想问的是:

  1. 如何为users购买的每张优惠券/凭证生成唯一的代码。网站上发布的每个凭证都有主键。如果 10个客户购买了相同的优惠券,则在兑换时如何避免重复。如果我添加唯一代码,我应该在vouchers表中添加还是在users结帐后生成它。

  2. 我应该为兑换和兑换详细信息创建表格。以及如果已使用该凭单,如何给出提示。

请给我一些建议。谢谢。

2 个答案:

答案 0 :(得分:1)

我认为您应该研究usersvouchers表/模型之间的many to many relationships。这基本上意味着许多users可以有许多vouchers,反之亦然。

该表然后可以具有其他字段,例如redeemed(可以是dateTime字段)和notes / details。将redeemed作为dateTime字段意味着您可以设置user兑换此凭证的确切时间。

可以使用它,以使user不会多次赎回凭证。

答案 1 :(得分:1)

第一个问题

您可以使用凭证ID,例如用户ID。因此,如果我们有2位用户和1张代金券,那么这些唯一的代码将是这样的:1-1、1-2。

如果它们看起来像1-1和1-2,然后在-标记上进行简单爆炸,您将有两个元素数组,第一个是凭单ID,第二个是用户ID。您可以将其存储在凭证表中...

但是,如果您要使用多对多关系,则是一种更好的方法。您正在创建UsersVouchersUserVouchers表并在它们之间连接函数。用户可以有许多userVoucher,但是userVoucher只有一个Voucher。查看我的拾取数据库:http://www.laravelsd.com/share/8O0xtZ。这称为数据透视,您是在将用户与凭证连接时创建的。

第二个问题

UserVoucher关系中,您将有多少次使用了此凭证。您只需要在Vouchers表中创建一列,例如max_users,如果在其中编写例如4,则如果UserVoucher或前端有4行,则可以阻止创建新的交互这并且不显示购买按钮。两种安全方式都不错;)