我想在用户做某件事时为他们提供积分。例如:
等
他们中的一些人可能有条件,例如每天只有前3篇文章的分数,但我想我会直接在我的代码库中处理这个问题。
问题是如何处理这个好的数据库设计?我想到了3个表。
这很简单,所以我担心有一些我没有想过的条件,将来会咬我的。
答案 0 :(得分:0)
我认为你需要一个仅仅是“活动”的第四个表格,它只是一个要跟踪的活动类型的列表。这将有一个ID列,然后在您的user_activities表中包含一个“activity_id”以链接到该列。毫无疑问,您可以获得每种类型的唯一信息,例如,活动表可能包含
等列ID:每个laravel的唯一ID ACTIVITY_CODE:用作应用程序/业务逻辑的一部分的短代码 ACTIVITY_NAME:更长的名称,用于显示名称,例如“已回答问题” 事件:用户必须做什么才能触发活动奖励 POINT_VALUE:此事件的点数
等
如果您认为未来点数可能会发生变化(例如,鼓励某些用户活动),那么您将需要跟踪当时在用户活动表中授予的实际点数,或者某种方式来跟踪点数在任何时候都是。
虽然我建议使用第四个表格,但在进行任何设计工作之前,您真正需要的是更为谨慎的功能列表。我允许获得随时间变化的分数的例子就是这样一个特征,你没有提到,但你需要设计是否需要这个功能。
答案 1 :(得分:0)
我发现这个https://laracasts.com/lessons/build-an-activity-feed-in-laravel是非常好的解决方案。希望它可以帮助某人:)