【问题标题】:Model ignores primary key property模型忽略主键属性
【发布时间】: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-&gt;Model-&gt;id 仍会生成新记录,而设置$this-&gt;data['Model']['id'] 会生成更新。我以为我只是误读了一些东西,所以我选择了有效的方法,却忘了回来。
  • 你能发布你的控制器代码吗? 快速提示确保您没有意外调用$this-&gt;Model-&gt;create()的逻辑
  • 你确定模型文件已经加载了吗?尝试在那里的某个地方添加一个 die() 。可能是文件名有错别字。

标签: php cakephp


【解决方案1】:

您将模型上的 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,这是我的第一篇文章!

【讨论】:

    【解决方案2】:

    在保存之前尝试在控制器中打印数据,并检查您是否收到Id。 如果您在帖子中没有收到Id,那么model->save 将插入而不更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 2018-11-09
      相关资源
      最近更新 更多