2013-04-08 71 views
1

我在CakePHP應用程序中創建HABTM記錄時遇到問題。基本上,我有一個用戶可以喜歡的對象,和Facebook完全一樣。這三個表:在CakePHP中創建HABTM記錄的問題

  • users
  • objects
  • objects_users

我試圖創建下面的代碼HABTM記錄:

$data = array(
    'Object' => array(
     'id' => $object_id 
    ), 
    'User' => array(
     'id' => $this->Auth->user('id') 
    ) 
); 
$this->Object->User->save($data); 

,但我一直得到以下錯誤信息:

Error: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (dbprefix . objects_users , CONSTRAINT objects_users_ibfk_2 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE ON UPDATE CASCADE)

當我知道兩個相關的ID時,如何以編程方式在我的控制器中創建HABTM記錄?

回答

1

如果您有'objects_users'表,那麼Object和User之間的HABTM模型將被稱爲ObjectUser。

可以在objects_users表使用下面的代碼創造一個紀錄:

$data = array(); 
$data['ObjectsUser']['user_id'] = $user_id; 
$data['ObjectsUser']['object_id'] = $object_id; 

// From Users Controller use following code to insert the document 
$this->User->ObjectsUser->save($data); 

// From Objects Controller use 
$this->Object->ObjectsUser->save($data); 

對上述兩種刀片工作,你必須在兩個模型是這樣的一個已定義的關係:

// In User.php Model 
public $hasAndBelongsToMany = 'Object'; 

// In Object.php Model 
public $hasAndBelongsToMany = 'User'; 

讓我知道這是否適合你。

+0

這個整理它

debug($data); 

,並檢查您的SQL語句。謝謝。幾乎在那裏!剛剛在數組中鍵入錯誤的POST數據。再次感謝。 – 2013-04-08 20:52:16

+0

我很高興我幫助:) – 2013-04-09 12:13:59

0

錯誤消息表明您提供的用戶標識不存在於users表中。

檢查your're嘗試通過保存的數據:從調試面板