CakePHP成就和声誉系统

时间:2012-09-07 18:57:42

标签: php cakephp

之前已经在Stack Overflow上询问过这个问题,但是我没有看到任何与CakePHP有关的内容,所以我对这个主题领域仍然感到很难过。

所以我有一个允许用户,帖子和评论的应用程序。用户可以创建帖子和评论帖子。非常简单的东西。

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

  • 成就/徽章
  • 声望

一般的想法是,当用户执行诸如创建帐户,创建帖子10次或删除帖子等内容时,它会增加或消耗声誉。如果符合某个标准,则创建徽章或成就。

我认为这种方式有效,就是要有一个成就表:

id
title
description
image

和关系表

id
achievement_id
user_id
date

然后用户将在users表中使用滚动整数来表示声誉。

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

例如,如果我有一个简单的添加帖子方法,我将如何实现以下目标:

  1. 为每个成功的帖子添加10分的用户信誉
  2. 首先为用户添加徽章
  3. 为用户添加徽章第10个帖子
  4. 棘手的部分是第10个帖子的成就,因为看起来我需要在每次发布帖子时检查用户已经完成了多少其他帖子以及是否与数字相匹配,但是这个数字例如是需要从比实际代码更好的地方拉出来。也许另一个表包含规则? e.g。

    id
    title
    description
    

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

    对于这3个项目来说,最好的方法是作为一个例子,这样我就可以在应用程序中建立其他成就和声誉的基础。需要特定于蛋糕。

    由于

2 个答案:

答案 0 :(得分:1)

Cameron我认为您应该查看CakePhp Events system或创建observers来记录您的成就

答案 1 :(得分:1)

关于“棘手的部分是10个职位成就”:

这可以使用counterCache轻松完成。

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