我一直试图找到问题的答案几个小时。我目前正在使用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一起使用,仍然只创建了新记录但没有关联。就像我说的那样,我手工创建了一条记录,并试图找到它并且无论如何都找不到它。
答案 0 :(得分:0)
我显然解决了,我认为这是因为我没有创建GroupsUser.php模型文件。不是很确定,因为我改变了一堆东西!但也许它有助于某人。