【发布时间】:2011-08-28 04:06:04
【问题描述】:
编辑
我已经修改了我的表,以便我的主键是 id,并且一切正常。仍在试图解决这个问题。
我有下面的模型,用于处理各种 eav 值。我看到的问题是,当我使用 $Model->save() 时,它总是会尝试插入而不是更新。即使我设置了主键的属性/值。
插入事件时,我注意到我在日志中得到了以下查询。表的主键是value_id。
SELECT COUNT(*) AS `count` FROM `user_entity_varchars` AS `UserEntityVarchar`
WHERE `UserEntityVarchar`.`id` = '1'
当我输出模型结构的调试时,我看到的是这样的:
[useDbConfig] => default
[useTable] => user_entity_varchars
[displayField] =>
[id] =>
[data] => Array
(
)
[table] => user_entity_varchars
[primaryKey] => id
由于某种原因,它无法识别模型类中设置了主键。
这是我正在使用的模型:
<?php
class UserEntityVarchar extends UserAgentAppModel {
var $name = 'UserEntityVarchar';
var $primaryKey = 'value_id';
var $belongsTo = array(
'UserEntity'=>array(
'foreignKey' => 'entity_id'
));
var $hasOne = array(
'EavAttribute' => array(
'foreignKey' => 'attribute_id'
));
}
?>
【问题讨论】:
-
您最近是否更新了模型或修改了 user_entity_varchars 表?由于 cake 缓存了您的模型,您可以尝试删除缓存并查看它是否有效。你可以在 tmp/cache/models 中找到它
-
即使清除缓存,我也有同样的问题。
-
这很有趣。我从来没有找到时间来运行它,但我想我已经看到了同样的事情。设置
$this->Model->id仍会生成新记录,而设置$this->data['Model']['id']会生成更新。我以为我只是误读了一些东西,所以我选择了有效的方法,却忘了回来。 -
你能发布你的控制器代码吗? 快速提示确保您没有意外调用
$this->Model->create()的逻辑 -
你确定模型文件已经加载了吗?尝试在那里的某个地方添加一个 die() 。可能是文件名有错别字。