回答
使用计数器缓存,见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