Я пытался найти ответ на свою проблему часами. В настоящее время я работаю с 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, как в книгах, по-прежнему создается только новая запись, но нет связи. И, как я уже сказал, я создал запись вручную и попытался найти ее, и она не найдет ее в любом случае.
как насчет 'saveAssociated'? http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-array – cornelb
Я думаю, что это только для hasMany или hasOne. .. по крайней мере, от того, что я прочитал по ссылке. Во всяком случае, я попробовал, не работал. Плюс я думаю, если бы это была единственная проблема, я смог бы найти ассоциацию в моей находке (Все). – user2888248