为每个 customer/user 生成唯一的 voucher/code
generate unique voucher/code for every customer/user
我尝试建立像 grou 这样的网站,这是一个在商家中出售某些商品的代金券的平台。
customer
或user
可以根据vouchers
他们买了。
我对兑换凭证的逻辑或数据库设计感到困惑。我想问的是:
如何为 users
购买的每个 coupon/voucher 生成唯一代码。网站上发布的每张优惠券都有主键。如果10位顾客购买了同一张优惠券,他们兑换时如何避免重复。如果我添加 唯一代码 ,我应该添加 vouchers
table 还是在 users
结帐后生成它。
我是否应该table兑换和兑换细节。以及如果该优惠券已被使用,如何给出一个标志。
请给我一些建议。谢谢。
我认为您应该查看 users
和 vouchers
tables/models 之间的 many to many relationships。这基本上意味着许多 users
可以有许多 vouchers
,反之亦然。
然后 table 可以有其他字段,例如 redeemed
(可能是 dateTime
字段)和 notes
/details
。将 redeemed
作为日期时间字段意味着您可以设置 user
兑换此优惠券的确切时间。
这可以用来避免 user
多次兑换代金券。
第一个问题
您可以使用优惠券 ID,例如用户 ID。因此,如果我们有 2 个用户和 1 个优惠券,那么这个唯一代码将是这样的:1-1、1-2。
如果它们看起来像 1-1 和 1-2,那么在 -
标记上简单展开,您将有两个元素数组,其中第一个是优惠券 ID,第二个是用户 ID。您可以将其存储在凭证中 table...
但更好的方法是使用多对多关系。您正在创建 Users
、Vouchers
和 UserVouchers
table 并在它们之间连接函数。用户可以有很多 userVouchers,但是 userVoucher 只有一张凭证。看看我的皮卡数据库:http://www.laravelsd.com/share/8O0xtZ。这称为数据透视表,您在将用户与优惠券连接时创建它。
第二题
根据UserVoucher
关系,您将知道这张代金券被使用了多少次。您只需要在 Vouchers table 中有一列,例如 max_users
,如果您在那里写,例如 4,如果您在 UserVoucher
中有 4 行或在前端你可以检查这个并且不显示购买按钮。两种安全的方式都会很好 ;)
我尝试建立像 grou 这样的网站,这是一个在商家中出售某些商品的代金券的平台。
customer
或user
可以根据vouchers
他们买了。
我对兑换凭证的逻辑或数据库设计感到困惑。我想问的是:
如何为
users
购买的每个 coupon/voucher 生成唯一代码。网站上发布的每张优惠券都有主键。如果10位顾客购买了同一张优惠券,他们兑换时如何避免重复。如果我添加 唯一代码 ,我应该添加vouchers
table 还是在users
结帐后生成它。我是否应该table兑换和兑换细节。以及如果该优惠券已被使用,如何给出一个标志。
请给我一些建议。谢谢。
我认为您应该查看 users
和 vouchers
tables/models 之间的 many to many relationships。这基本上意味着许多 users
可以有许多 vouchers
,反之亦然。
然后 table 可以有其他字段,例如 redeemed
(可能是 dateTime
字段)和 notes
/details
。将 redeemed
作为日期时间字段意味着您可以设置 user
兑换此优惠券的确切时间。
这可以用来避免 user
多次兑换代金券。
第一个问题
您可以使用优惠券 ID,例如用户 ID。因此,如果我们有 2 个用户和 1 个优惠券,那么这个唯一代码将是这样的:1-1、1-2。
如果它们看起来像 1-1 和 1-2,那么在 -
标记上简单展开,您将有两个元素数组,其中第一个是优惠券 ID,第二个是用户 ID。您可以将其存储在凭证中 table...
但更好的方法是使用多对多关系。您正在创建 Users
、Vouchers
和 UserVouchers
table 并在它们之间连接函数。用户可以有很多 userVouchers,但是 userVoucher 只有一张凭证。看看我的皮卡数据库:http://www.laravelsd.com/share/8O0xtZ。这称为数据透视表,您在将用户与优惠券连接时创建它。
第二题
根据UserVoucher
关系,您将知道这张代金券被使用了多少次。您只需要在 Vouchers table 中有一列,例如 max_users
,如果您在那里写,例如 4,如果您在 UserVoucher
中有 4 行或在前端你可以检查这个并且不显示购买按钮。两种安全的方式都会很好 ;)