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模型文件。不是很确定,因为我改变了一堆东西!但也许它有助于某人。