Модель игнорирует свойство первичного ключа - PullRequest
3 голосов
/ 28 августа 2011

РЕДАКТИРОВАТЬ

Я изменил свою таблицу так, чтобы мой первичный ключ был 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 голосов
/ 17 ноября 2011

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

0 голосов
/ 14 сентября 2011

Вы устанавливаете 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, это мой первый пост!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...