我尝试建立像 grou 这样的网站,该网站可以在商家中销售某些商品的代金券。
customer
或user
可以根据他们的vouchers
在离线商店(或商家)购买vouchers
并兑现已经买了。
我对有关兑换凭证的逻辑或数据库设计感到困惑。我想问的是:
如何为users
购买的每张优惠券/凭证生成唯一的代码。网站上发布的每个凭证都有主键。如果 10个客户购买了相同的优惠券,则在兑换时如何避免重复。如果我添加唯一代码,我应该在vouchers
表中添加还是在users
结帐后生成它。
我应该为兑换和兑换详细信息创建表格。以及如果已使用该凭单,如何给出提示。
请给我一些建议。谢谢。
答案 0 :(得分:1)
我认为您应该研究users
和vouchers
表/模型之间的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。您可以将其存储在凭证表中...
但是,如果您要使用多对多关系,则是一种更好的方法。您正在创建Users
,Vouchers
和UserVouchers
表并在它们之间连接函数。用户可以有许多userVoucher,但是userVoucher只有一个Voucher。查看我的拾取数据库:http://www.laravelsd.com/share/8O0xtZ。这称为数据透视,您是在将用户与凭证连接时创建的。
第二个问题
从UserVoucher
关系中,您将有多少次使用了此凭证。您只需要在Vouchers表中创建一列,例如max_users
,如果在其中编写例如4,则如果UserVoucher
或前端有4行,则可以阻止创建新的交互这并且不显示购买按钮。两种安全方式都不错;)