2010-07-29 23 views
3

我有一個CakePHP應用程序,我試圖計算每個用戶有多少個帖子。我還使用分頁助手在其個人資料中顯示所有用戶的帖子。
我可以:
1)做一個find('all', $conditions)請求所有用戶的帖子,然後解析爲我需要的計數(通過郵寄和檢查它是否符合我期待的)。
2)多次請求find('count', $conditions)請求,獲得我需要的所有計數。
3)維護用戶表中的新列以在創建帖子時跟蹤這些數字(當涉及新帖子時,將涉及寫入用戶帳戶)。
哪一個會是最好的選擇?在CakePHP中find('count')的代價是多少?

回答

7

從數據庫中獲取所有記錄並用PHP計算它們是非常浪費的廢話。這正是數據庫的用途。

A find('count')只是做了一個SQL查詢,如SELECT COUNT(*) FROM … WHERE …,這真的是最快的方法。添加適當的條件以獲得所需的計數,您可能需要刷新SQL以瞭解這些條件。

還有一個特殊的counter-caching,你可能想看看,如果你正在計算hasMany關係。

+0

鏈接不工作。 – 2015-01-23 05:18:00

+0

是的,鏈接大約5年過時了。我希望你不再使用Cake的1.x版本。不知道當前版本中的等效物是什麼。 – deceze 2015-01-23 05:28:38

+0

好的。當然,在新項目中使用2.x分支的最新版本。我將嘗試查找當前的鏈接並更新此主題。 – 2015-01-23 05:51:09