回答
使用計數器緩存,見http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#belongsto
counterCache:如果設置爲true相關模型將自動 增加或減少「[singular_model_name] _count 「字段在 外部表中每當你做一個save()或delete()。如果它是一個字符串 那麼它是使用的字段名稱。計數器字段 中的值表示相關行的數量。您還可以通過使用數組(其中鍵爲字段名稱並且值 是條件)指定多個 計數器高速緩存。例如爲:
陣列( 'recipes_count'=>真, 'recipes_published'=>數組( 'Recipe.published'=> 1))counterScope:可選條件陣列用於更新計數器 緩存字段。
在這種情況下不需要額外的查詢。如果您添加/刪除帖子,它將自動在用戶表中減少計數。
例子:
public $belongsTo = array(
'User' => array(
'foreignKey' => 'user_id',
'counterCache' => true,
'counterScope' => array(
'published' => 1)));
這應該選擇做1篇文章以上
SELECT * FROM `users` as u
INNER JOIN `posts` as p ON p.user_id = u.id
在蛋糕,你應該能夠做這樣的事情的所有用戶:
$this->User->find('all', array('joins' =>
array(
'table' => 'posts',
'alias' => 'p',
'type' => 'inner',
'conditions' => array(
'User.id = p.user_id'
)
)
);
[編輯]
也許你可加
'group' => 'User.id'
或
'fields' => 'DISTINCT User.id, ...'
刪除重複項
這個查詢好像又回到了一堆愚弄的,每一個崗位,我相信。 –
您可以嘗試使用羣組聲明來過濾出愚蠢。你也可以嘗試一個問題的答案非常類似我最近有:http://stackoverflow.com/questions/8707048/last-x-blog-entries-but-only-once-per-user/11933591#11933591 – mark
- 1. 用戶has_many帖子。獲得至少有1個帖子的所有用戶
- 2. 從用戶選擇帖子
- 3. 表單選擇多個帖子到WebAPI
- 4. SSRS 2008 R2,選擇1個或多個值或沒有上述
- 5. 如何選擇用戶朋友帖子和用戶帖子
- 6. 選擇具有多個標記的帖子
- 7. CakePHP中,選擇MySQL的記錄由一個或多個ID
- 8. 上個月的選擇帖子
- 9. 選擇從最新的5個帖子
- 10. 選擇用戶沒有回覆的所有帖子?
- 11. 定義一個選擇值-1或1
- 12. 多個或單個選擇
- 13. 在cakephp中選擇多個複選框?
- 14. Cakephp顯示no。每個用戶發表的帖子
- 15. CakePHP的多個子
- 16. 使用$或選擇,有這個選擇
- 17. 具有多個結果的子選擇
- 18. WordPress的多個帖子從帖子ID
- 19. 只選擇5個最新帖子
- 20. 顯示1個帖子從一個特定的catergory如果在wordpress中選擇
- 21. LINQ:選擇包含多個標籤的帖子
- 22. SQL查詢選擇屬於多個類別的帖子
- 23. 帖子組名稱與選擇的多個設備
- 24. Twitter - 多用戶的帖子?
- 25. 有了多個選擇,我們如何才能知道用戶選擇了或未選擇某個值?
- 26. Cakephp 2用戶有多個組訪問
- 27. 熱/冷可觀察,1個訂戶與多個選擇查詢?
- 28. 選擇具有一個或多個用戶角色的導航項目
- 29. 查找用戶的平均年齡爲0的帖子,帖子1-5和> 5個帖子
- 30. 父成員指示當前在多選篩選器中選擇了1個(或多個)子項
這是很棒的。如果我在創建記錄後添加它,它是否會追溯填充計數? –
它會在下次添加或刪除記錄時執行此操作。只要看看代碼,它非常簡單。如果您想一次全部更新它們,請編寫一個shell腳本來更新所有現有記錄或使用遷移(github.com/cakedc/migrations) – burzum