1

これは以前に Stack Overflow で質問されたことですが、CakePHP に関連するものを見たことがないので、この分野に関してはまだかなり困惑しています。

だから私は、ユーザー、投稿、コメントを許可するアプリを持っています。ユーザーは投稿を作成し、投稿にコメントできます。かなり単純なもの。

私がやりたいのは、2つの機能を追加することです(互いに関連していません):

  • 実績/バッジ
  • 評判

一般的な考え方は、ユーザーがアカウントを作成する、投稿を 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 つの項目に対してこれを行う最善の方法は何でしょうか。これにより、アプリで他の成果と評判を行うための基盤を得ることができます。Cake 固有である必要があります。

ありがとう

4

2 に答える 2

1

Cameron CakePhp Events システムを確認するか、オブザーバーを作成して実績を記録する必要があると思います

于 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 に答える