模型忽略主键属性

时间:2011-08-28 04:06:04

标签: php cakephp

修改

我修改了我的表,以便我的主键是id,一切正常。仍然试图解决这个问题。

我有以下模型用于处理各种eav值。我看到的问题是,当我使用$ Model-> save()时,它总是会尝试插入而不是更新。即使我设置了primaryKey的属性/值。

插入时的事件,我注意到我在日志中得到了这个查询下面的查询。表的主键是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'
    ));

}
?>

2 个答案:

答案 0 :(得分:0)

您正在将模型上的primaryKey设置为“value_id”,请尝试将此行更改为:

 <?php
class UserEntityVarchar extends UserAgentAppModel {
var $name = 'UserEntityVarchar';
/*var $primaryKey = 'value_id'; Change this to*/
var $primaryKey = 'id';

var $belongsTo = array(
    'UserEntity'=>array(
    'foreignKey' => 'entity_id'
    ));
var $hasOne = array(
    'EavAttribute' => array(
    'foreignKey' => 'attribute_id'
    ));

}
?>

希望它有所帮助! 欢呼声

pd,这是我的第一篇文章!

答案 1 :(得分:0)

尝试在保存之前在控制器中打印数据,并检查您是否在帖子中获得Id。 如果您未在帖子中显示Id,则model - &gt; save将插入而不会更新。