1
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 的新手。

您的帮助将不胜感激和奖励!

4

1 回答 1

1

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

我非常喜欢设置:

public $recursive = -1;

在您的 AppModel 中 - 然后您不必再担心它,因为将其保留为 -1 是 IMO 的最佳实践。然后,如果您想检索其他关联的模型数据,只需使用CakePHP 的 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 以外的任何值都应该是一个危险信号。这是一个很酷的概念,但在实践中,随着站点的增长,它会给您带来很多麻烦。像上面建议的那样在 AppModel 中将它设置为 -1,然后忘记它甚至存在。

于 2012-12-04T07:04:50.573 回答