0

我一直在試圖找到一個答案我的問題幾個小時。我目前正在使用CakePHP 2.4。CakePHP HABTM協會不工作

我有兩個模型,用戶和組。我已經創建用於每個以下關聯: (user.php的)

公共$ hasAndBelongsToMany =陣列(

'Group' => 
     array(
      'className' => 'Group', 
      'joinTable' => 'groups_users', 
      'foreignKey' => 'user_id', 
      'associationForeignKey' => 'group_id', 
      'unique' => true, 
     ) 
); 

和(Group.php):

公共$ hasAndBelongsToMany = array(

'GroupUser' => 
     array(
      'className' => 'User', 
      'joinTable' => 'groups_users', 
      'foreignKey' => 'group_id', 
      'associationForeignKey' => 'user_id', 
      'unique' => true, 
     ) 
); 

我使用GroupUser而不是「用戶」的原因是我得到一個錯誤,因爲我已經使用「用戶的一些其他關係。

我的形式是這樣的:

回聲$這 - >形式 - >創建( '組',陣列( '控制器'=> '基團', '動作'=> '添加') );

回聲$這 - >形式 - >輸入( 'User.id',陣列( '類型'=> '隱藏', '值'=> $ AUTHUSER [ 'ID']);

回波$這 - >形式 - >輸入( 'Group.address');

回聲$這 - >形式 - >端部(__( '保存',真));

我也有一個與「ID」,「USER_ID」和「GROUP_ID」表稱爲groups_users

當我提交表單,它創造了新的組並保存數據,但阿索ciation不會被創建。

我試圖手動填充與現有的user_id和GROUP_ID但仍然是一個groups_users記錄,當我使用查找(全部),它沒有找到預期的關聯喜歡照着書應該。

我調試正在被保存的陣列,它看起來像這樣:

Array 
(
[User] => Array 
    (
     [user_id] => 39 
    ) 
[Group] => Array 
    (
     [address] => asdasd, San Antonio, Texas 78233, EE. UU. 
    ) 



) 

這是我GroupsController的代碼添加功能:

if ($this->Group->save($this->request->data)) { 
// redirect or do something 
} 

我試圖改變陣列工作與saveAll一樣,仍然只創造了新的記錄但沒有關聯。正如我所說,我手工創造了一個記錄,並試圖找到它,它不會找到它。

+0

'saveAssociated'如何? http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-array – cornelb

+0

我覺得只有對的hasMany多數民衆贊成或hasOne關聯。至少從我在鏈接上看到的內容。無論如何,我試過了,沒有工作。 另外我認爲如果這是唯一的問題,我將能夠在我的find(全部)中找到關聯。 – user2888248

回答

0

我解決它顯然,我想這是因爲我沒有創建GroupsUser.php模型文件。不是很確定,因爲我改變了一堆東西!但也許它有助於某人。