4

Zend Frameworkを使用してWebアプリを構築しています。ロジックをモデル化するか、目標に向けた進捗状況の追跡に関係するロジックを追跡する必要があります。

サンプルの目標で説明しましょう

ユーザーは次の3すべてを完了する必要があります:
A)アクティビティ1
B)アクティビティ2
C)アクティビティ3
ユーザーは次のいずれかを完了する必要があります: D)アクティビティ4 E)アクティビティ5 F)アクティビティ6


最初のグループから3つすべてを完了し、2番目のグループから1つを完了した後、USERはその目標を完了しました。これをPHPでモデル化して、目標が完了したことをWebアプリが認識できるようにするにはどうすればよいですか?また、データをデータベースに保存するにはどうすればよいですか?

明確にするために、このような多くの異なるタイプの目標がありますが、それらはすべて本質的に非常に似ています。

4

1 に答える 1

3

A、B、CおよびD、E、Fが常に目標内の特定のグループに属すると仮定すると、次のように設計します。

Goal::isComplete()
{
  foreach (Group)
  {
    switch (Group::type())
    {
      case "all":
        TRUE if all complete
        break

      case "any":
        TRUE if any complete
        break;
    }
  }

  if all TRUE
    return TRUE
}

または英語で...

次に、すべてのアクティビティをアクティビティテーブル内に格納し、それらが含まれるグループをグループテーブルへの単純なID参照として定義できます。アクティビティが完了すると、DBでこのようにマークを付けることができます。

完了した目標を確認するには、目標に必要な各グループを探すだけです。各グループは「all」または「any」(または「min-2」などの他のそのようなオプション)のいずれかになり、これにより、アクティビティの完了で何をチェックするかがスクリプトに指示されます。各グループは、そのアクティビティに応じてTRUEまたはFALSEを返すことができます。すべてのグループが必要であると仮定すると、目標は簡単に完了かどうかを識別できます。

データベースは次のようになります。

Activities
- id
- group_id
- name
- completed
- [details about activitiy]

Groups
- id
- goal_id
- type  (ENUM: 'any', 'all')
- completed
- [details about group]

Goals
- id
- completed
- [details about goal]

グループと目標内の完了値は、アクティビティが更新されるたびにアクティブに更新されるか、省略され、それらの値が常に動的に処理される必要があります。

これは理にかなっていて、あなたが必要としていることをしますか?

于 2010-08-04T03:25:30.893 に答える