这是以前在Stack Overflow上问过的问题,但我没有看到任何与CakePHP相关的内容,所以我对这个主题领域仍然很困惑。
所以我有一个应用程序,允许用户,帖子和评论。用户可以创建帖子并对帖子发表评论。很简单的东西。
我想做的是添加两个功能(彼此无关):
- 成就/徽章
- 声誉
一般的想法是,当用户做一些事情,比如创建一个帐户,创建一个帖子10次,或者删除帖子等等。这会增加或耗尽声誉。并且如果满足特定标准,则创建徽章或成就。
我认为这是有效的,是有一个成就表:
id
title
description
image
以及关系表
id
achievement_id
user_id
date
然后用户将在用户表中有一个滚动整数作为信誉。
我感到困惑的部分是,当满足标准时,何时以及如何创建这些记录,而不必在我的所有方法中插入大量逻辑来检查各种事情等。
例如,如果我有一个简单的add-post方法,我将如何实现以下目标:
- 每成功发布一篇帖子,用户信誉增加10分
- 为首次发布的用户添加徽章
- 为用户添加徽章第10个帖子
棘手的部分是第10个帖子的成就,因为每次发布帖子时,我似乎都需要某种方法来检查用户还发布了多少其他帖子,以及它是否匹配一个数字,但这个数字需要从比实际代码更好的地方提取。也许是另一张包含规则的表?例如
id
title
description
然后在成就表中有一个链接,比如rule_id来关联它,也许还有一个动作计数,所以它需要运行这么多次。。。
以这3项为例,最好的方法是什么,这样我就可以在应用程序中取得其他成就和声誉。需要针对蛋糕。
感谢
Cameron我认为你应该查看CakePhp事件系统或创建观察员来记录你的成就
关于"棘手的部分是10后成就":
这可以使用counterCache轻松完成。
有关此CakePHP功能的更多详细信息,请点击此处:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#countercache-缓存您的计数