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的新手。
您的帮助将受到高度赞赏和奖励!
答案 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,如上所述,然后忘记它甚至存在。