2

我不确定这个问题是否在这里,所以如果不是,请原谅,我会删除它。

我正在使用 Symfony2、Twig 和 Doctrine。我正在开发一个 ToDo 应用程序作为练习,网页如下所示:

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 回答