【发布时间】:2012-06-21 00:16:10
【问题描述】:
注意:我最初在一小时前提出了这个问题,但直到最近才意识到我犯了一个重大的复制和粘贴错误。一个如此重要,以至于删除旧帖子并重新开始更容易。对此感到抱歉。
在 CakePHP 框架中,在我更新了一个模型后,我转储了 SQL 查询。 COUNT(*) 被调用了两次,原因不明。
所以我有两个模型,$Foo 和 $Bar。为简单起见,我没有定义它们之间的任何$belongsTo 或$hasMany 关系。问题只涉及 $Foo,但以防万一我也包含了 $Bar 的代码。
$data = array(
'something' => 12,
'something_else' => $this->Bar->field('id', $conditions),
);
$this->Foo->id = $this->Foo->field($data);
$this->Foo->save($data);
我根据一组条件(此处不相关)获取$Bar.id 字段。我使用该 id 来确定应该插入或更新到 $Foo 的 $data。如果$Foo 的id 满足$data 的要求,则返回该值;如果不是 false 将被返回。根据 CakePHP 的架构,save() 将更新如果有一个有效的 id;否则它将插入。我很确定我没有做任何不寻常的事情。
这是我在 SQL 转储中看到的:
SELECT `Foo`.`id` FROM `foos` AS `Foo` WHERE `something` = 12 AND `something_else` = 1 LIMIT 1
SELECT COUNT(*) AS `count` FROM `foos` AS `Foo` WHERE `Foo`.`id` = 1
SELECT COUNT(*) AS `count` FROM `foos` AS `Foo` WHERE `Foo`.`id` = 1
UPDATE `foos` SET `something` = 12, something_else` = 1 WHERE `foos`.`id` = 1'
对于我的生活,我完全不知道为什么需要COUNT(),更不用说为什么它被调用了两次。有谁知道发生了什么?感谢您的帮助。
【问题讨论】:
标签: php mysql cakephp cakephp-model