ИЗМЕНИТЬ

Я изменил свою таблицу так, чтобы мой первичный ключ был 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'
    ));

}
?>
3
rottmanj 28 Авг 2011 в 08:06

2 ответа

Лучший ответ

Вы устанавливаете 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'
    ));

}
?>

Надеюсь, это поможет! ваше здоровье

Пд, это мой первый пост!

0
glizarraga 14 Сен 2011 в 16:58

Попробуйте распечатать данные в контроллере перед сохранением и проверьте, получаете ли вы Id по почте или нет. Если вы не получаете Id в сообщении, то model -> save будет вставлен, а не обновлен.

0
eeerahul 17 Ноя 2011 в 08:32