0

Я пытался найти ответ на свою проблему часами. В настоящее время я работаю с cakePHP 2.4.CakePHP HABTM Association не работает

У меня есть две модели, пользователи и группы. Я создал следующие ассоциации для каждого: (User.php)

публика $ hasAndBelongsToMany = массив (

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

и (Group.php):

общественности $ hasAndBelongsToMany = массив (

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

Причина, по которой я использую GroupUser, а не «Пользователь», - это ошибка, потому что я уже использовал «Пользователь для какого-то другого отношения».

Моя форма выглядит следующим образом:

эхо $ this-> форма-> создать ('Group', массив ('контроллер' => 'группы', 'действие' => 'добавить'));

Эхо $ этом-> form-> вход ('User.id', массив ('тип' => 'скрытый', 'значение' => $ AuthUser [ 'ID']);

эхо $ this-> форма-> вход ('Group.address');

эхо $ this-> форма-> конец (__ ('Сохранить', правда));

у меня также есть таблица с именами group_users с «id», «user_id» и «group_id»

Когда я отправляю форму, она создала новую группу и сохраняет данные, но asso ciation не создается.

Я попытался вручную заполнить запись groups_users существующим user_id и group_id, но все же, когда я использую 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, как в книгах, по-прежнему создается только новая запись, но нет связи. И, как я уже сказал, я создал запись вручную и попытался найти ее, и она не найдет ее в любом случае.

+0

как насчет 'saveAssociated'? http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-array – cornelb

+0

Я думаю, что это только для hasMany или hasOne. .. по крайней мере, от того, что я прочитал по ссылке. Во всяком случае, я попробовал, не работал. Плюс я думаю, если бы это была единственная проблема, я смог бы найти ассоциацию в моей находке (Все). – user2888248

ответ

0

Я решил это, по-видимому, я думаю, что это было потому, что я не создал файл модели GroupsUser.php. Не очень уверен, потому что я сменил кучу вещей! Но, возможно, это помогает кому-то.