我一直在试图找到一个答案我的问题几个小时。我目前正在使用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