2

この質問がここに向けられているかどうかわからないので、そうでない場合は、すみません、削除します。

私は Symfony2、Twig、Doctrine を使用しています。私は演習として ToDo アプリに取り組んでおり、Web ページは次のようになります。

Today (5 tasks)
- Work (2 tasks)
  - clean the desk
  - write report
- Home (3 task)
  - Pay (2 tasks)
    - Internet
    - Electricity
  - Buy (1 task)
    - Eggs

Completed (1 task)
- Work 
  - Talk to boss

カテゴリ (仕事と家庭)、サブカテゴリ (支払いと購入)、ステータス付きのタスク (完了または未完了) があります。

私の問題は、残りのタスクを数えることです。

番号はタスクの前に表示されるため、それを知るために次のようにします。

 for each main_category
   if the main_category has subcateries 
     count = 0
     for each subcategory
       for each task of the subcategory if the task.status is 0 (uncompleted)
         set count = count + 1
       endfor
     endfor
   else
     count = 0
     for each task of the category if the task.status is 0
       set count = count + 1
     endfor 
   endif
 endfor 

(それが機能するかどうかさえわかりませんが、あなたはアイデアを得たと思います。)

これは複雑で、ページが更新されるたびにこれを確認するのが遅いと思います。

私が考えることができる他のオプションは、カテゴリエンティティに新しいフィールドを追加することです(未完了のタスクの数、または両方が必要になる可能性があります-完了した数と未完了の数)。しかし、タスクのステータスを変更するたびに、番号も変更する必要があります。

正直なところ、どちらが速くてどちらが優れているかを考えなければなりません (だから私はこの質問をしています) が、最初のものは本当に複雑で理解しにくいようです。

この機能を実現するためのより良いアイデアがあるかどうか、またはない場合は、どの方法が優れているか、どの方法がより高速になるかなどを教えてください。質の高いコードを書くことを本当に学びたいです。:)

事前にどうもありがとうございました!

4

1 に答える 1

0

ここに役立つかもしれないものがあります。アイデアは、追加されたタスク数を持つカテゴリのビューを作成することです。そのため、結果に通知カウントが含まれる必要なデータを返すビューを作成できます。ネストされたタスク (サブカテゴリから) の数も忘れずに追加してください。ビューのクエリは、通常のテーブルよりも少し遅くなる可能性がありますが、多くの反復よりも高速になると思います. 実行時間の一部を SQL サーバーにも移動しますが、これは良いことです。

于 2013-10-22T09:58:00.620 に答える