2011-08-28 53 views
3

編輯的模型忽視了主鍵屬性

我已經修改了我的表,這樣我的主鍵是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' 
    )); 

} 
?> 
+0

你最近更新了你的模型還是修改了user_entity_varchars表?因爲cake緩存你的模型,你可以嘗試刪除緩存並查看它是否有效。你可以在tmp/cache/models中找到它 –

+0

即使清除緩存,我也有同樣的問題。 – rottmanj

+0

這很有趣。我從來沒有找到時間去處理它,但我認爲我看到了同樣的事情。在設置'$ this-> data ['Model'] ['id']'生成更新時,設置'$ this-> Model-> id'仍然生成新記錄。我以爲我只是誤讀了一些東西,所以我用了一些有用的東西,忘了回來了。 –

回答

0

您的模型作爲「value_id」設定的PrimaryKey,嘗試改變這一行:

<?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,這是我的第一篇文章!

0

嘗試在保存前打印控制器中的數據,並檢查您是否獲得Id。 如果你沒有得到Id的帖子,那麼model - >save將插入並且不會更新。