cakephp查找与此查询等效的计数

时间:2012-12-04 06:48:58

标签: php cakephp

SELECT COUNT(*) FROM `users` where usergroup_id = 4 AND studio_id = 380 AND userstatus_id = 1

在此查询中,我得到4的结果,这是我的预期输出,但在执行此查询时:

$this->User->find('count',array('conditions'=>array(
                                        'User.studio_id'=>380,
                                        'User.usergroup_id'=>4,
                                        'User.userstatus_id'=>1)))

我收到了8

的结果

您认为这里的问题是什么?感觉像我的第二个代码是错误的。

我是cakePHP的新手。

您的帮助将受到高度赞赏和奖励!

1 个答案:

答案 0 :(得分:1)

查询和CakePHP find('count', ...应该产生相同的东西。可能的差异(根据一些评论)是您的$recursive级别(请参阅CakePHP recursive)。

我非常喜欢设置:

public $recursive = -1;

在您的AppModel中 - 然后您不必再担心它,因为将它保留为-1是最佳实践IMO。然后,如果您想要检索其他关联的模型数据,只需使用CakePHP's Containable

如果您不想在整个网站上将其设置为-1,请在查询之前将其设置为:

$this->User->recursive = -1;
$this->User->find('count',array('conditions'=>array(
    'User.studio_id'=>380,
    'User.usergroup_id'=>4,
    'User.userstatus_id'=>1
)));

网站注意:$recursive设置为-1以外的ANYTHING应为红色标记。这是一个很酷的概念,但在实践中,随着网站的增长,它会让你感到很头疼。在AppModel中将它设置为-1,如上所述,然后忘记它甚至存在。