我一直在試圖找到一個答案我的問題幾個小時。我目前正在使用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一樣,仍然只創造了新的記錄但沒有關聯。正如我所說,我手工創造了一個記錄,並試圖找到它,它不會找到它。
'saveAssociated'如何? http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-array – cornelb
我覺得只有對的hasMany多數民衆贊成或hasOne關聯。至少從我在鏈接上看到的內容。無論如何,我試過了,沒有工作。 另外我認爲如果這是唯一的問題,我將能夠在我的find(全部)中找到關聯。 – user2888248