CakePHP HABTM协会无法正常工作

时间:2014-02-05 20:32:44

标签: mysql arrays cakephp-2.0 has-and-belongs-to-many cakephp-2.4

我一直试图找到问题的答案几个小时。我目前正在使用cakePHP 2.4。

我有两个模型,用户和群组。我为每个创建了以下关联: (user.php的)

  

public $ hasAndBelongsToMany = array(

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

和(Group.php):

  

public $ hasAndBelongsToMany = array(

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

我使用GroupUser而不是“User”的原因是我收到错误,因为我已经使用“User for some other relationship。”

我的表单如下:

  

echo $ this-> Form-> create('Group',array('controller'=>'group','action'=>'add'));

     

echo $ this-> Form-> input('User.id',array('type'=>'hidden','value'=> $ authUser ['id']);

     

echo $ this-> Form-> input('Group.address');

     

echo $ this-> Form-> end(__('Save',true));

我还有一个名为groups_users的表,其中包含“id”,“user_id”和“group_id”

当我提交表单时,它创建了新组并保存了数据,但未创建关联。

我尝试使用现有的user_id和group_id手动填写groups_users记录,但是当我使用find(All)时,它根据书籍找不到预期的关联。

我调试了正在保存的数组,它看起来像这样:

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一起使用,仍然只创建了新记录但没有关联。就像我说的那样,我手工创建了一条记录,并试图找到它并且无论如何都找不到它。

1 个答案:

答案 0 :(得分:0)

我显然解决了,我认为这是因为我没有创建GroupsUser.php模型文件。不是很确定,因为我改变了一堆东西!但也许它有助于某人。