user2888248
user2888248

Reputation: 1

CakePHP HABTM Association not working

I've been trying to find an answer to my problem for hours. I am currently working with cakePHP 2.4.

I have two models, Users and Groups. I have created the following associations for each: (User.php)

public $hasAndBelongsToMany = array(

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

and (Group.php):

public $hasAndBelongsToMany = array(

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

The reason I use GroupUser and not "User" is I get an error because I have already used "User for some other relation.

My form looks like this:

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));

I also have a table called groups_users with "id", "user_id" and "group_id"

When I submit the form, it created the new Group and saves the data, but the association is not created.

I tried manually filling a groups_users record with an existing user_id and group_id but still, when I use find(All), it doesn't find the expected association like it should according to the books.

I debugged the array that is being saved and it looks like this:

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



)

This is the code in my GroupsController add function:

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

I have tried changing the array to work with saveAll like in the books, still only created new record but no association. And as I said, I mannually created a record and tried finding it and it wouldn't find it anyway.

Upvotes: 0

Views: 325

Answers (1)

user2888248
user2888248

Reputation: 1

I solved it apparently, I think it was because I hadn't created the GroupsUser.php model file. Not rreally sure because I changed a bunch of stuff! But maybe it helps someone.

Upvotes: 0

Related Questions