1

这是以前在 Stack Overflow 上提出的问题,但我还没有看到任何与 CakePHP 相关的内容,所以我仍然对这个主题领域感到困惑。

所以我有一个允许用户、帖子和评论的应用程序。用户可以创建帖子并对帖子发表评论。很简单的东西。

我想要做的是添加两个功能(彼此不相关):

  • 成就/徽章
  • 名声

一般的想法是,当用户执行诸如创建帐户、创建帖子 10 次或删除帖子等操作时,它会增加或减少声誉。如果满足特定标准,则创建徽章或成就。

我看到这个工作的方式是有一个成就表:

id
title
description
image

和一个关系表

id
achievement_id
user_id
date

然后用户将在用户表中获得一个滚动整数以获得声誉。

我被难住的部分是何时以及如何在满足条件时创建这些记录,而不必在我的所有方法中塞入大量逻辑来检查各种事情等。

因此,例如,如果我有一个简单的 add post 方法,我将如何实现以下目标:

  1. 每成功发帖,用户声誉加 10 分
  2. 为用户第一次发帖添加徽章
  3. 为用户第 10 个帖子添加徽章

棘手的部分是第 10 个帖子成就,因为似乎每次发布帖子时我都需要以某种方式检查用户已经完成了多少其他帖子以及它是否匹配一个数字,但是这个数字例如需要从中提取比实际代码更好的地方。也许另一个包含规则的表?例如

id
title
description

然后在成就表中有一个链接,比如 rule_id 来关联它,也许还有一个动作计数,所以它需要运行它很多次......

以这 3 个项目为例,最好的方法是什么,这样我就可以在应用程序中获得其他成就和声誉。需要特定于蛋糕。

谢谢

4

2 回答 2

1

Cameron 我认为你应该看看 CakePhp事件系统或创建观察者来记录你的成就

于 2012-09-07T21:05:43.387 回答
1

关于“棘手的部分是10后成就”:

这可以使用 counterCache 轻松完成。

有关此 CakePHP 功能的更多详细信息:http: //book.cakephp.org/2.0/en/models/associations-linking-models-together.html#countercache-cache-your-count

于 2012-09-07T21:09:59.047 回答