CakePHP保存一个新的规范化HABTM模型并在解析表中使用它
因此,快速概述我要做的事情。用户有许多CakePHP保存一个新的规范化HABTM模型并在解析表中使用它,php,cakephp,has-and-belongs-to-many,Php,Cakephp,Has And Belongs To Many,因此,快速概述我要做的事情。用户有许多业务单元用户BusinessUnit有许多BusinessUnitUser 通过这种方式,我将它们的关系规范化为两个Hasmany(我讨厌使用HABTM相关数据) 在一个新的用户表单上,我想让用户可以同时添加一个新的业务单元 当前,我的$this->request->data数组如下所示: Array ( [User] => Array ( [title] => Mr [fi
业务单元用户
BusinessUnit
有许多BusinessUnitUser
通过这种方式,我将它们的关系规范化为两个Hasmany(我讨厌使用HABTM相关数据)
在一个新的用户表单上,我想让用户可以同时添加一个新的业务单元
当前,我的$this->request->data
数组如下所示:
Array
(
[User] => Array
(
[title] => Mr
[first_name] => Kyle
[last_name] => O'Brien
[username] => 55546@mylife.unisa.ac.za
[producing_office_id] => 4
)
[BusinessUnit] => Array
(
[name] => lskfjsldkfjsdlfk
)
)
现在,这显然是不正确的,但我正在努力思考如何解决这个问题。我想给你一个阵列的视觉效果,你可以告诉我我的阵列应该是什么样子
这是我在BusinessUnitsUser
中的关系数组:
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'BusinessUnit' => array(
'className' => 'BusinessUnit',
'foreignKey' => 'business_unit_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
编辑(感谢ndm)
注意目标:我正在添加一个用户,我可能会也可能不会添加BusinessUnitsUser
关联,但我肯定还会添加一个新的BusinessUnit
——该表单存在于新的用户表单中
目前,User
正在使用$this->User->saveAll($this->request->data)
保存,但不是新的BusinessUnit
,当然也不是新的BusinessUnitsUser
条目(我希望它包含新的用户id和新的业务单元id)。通过联接表模型保存
解决方案应该非常简单,对于这种类型的关联,您必须通过联接表模型保存(即使您没有在该表上保存其他数据):
另请参见
这样,ORM可以正确地将
belongsTo
关联数据保存,并使用从关联数据的保存操作中获得的外键值在联接表中创建适当的记录。是什么让您认为给定的格式不正确(不是,因为我正确理解了您的设置)?实际的问题是什么?@ndm-将此数据保存在$this->User->saveAll($this->request->data)中;会生成一个新保存的用户,但业务单元模型没有新条目,业务单元用户条目也没有新条目(将生成新的用户id和新的业务单元id)好的,我明白了,请把这个添加到你的问题中。对不起,我花了一段时间才回复你。我是天才,我在我的var文件夹上不小心设置了sudo chmod-R,第一百万次把我的Ubuntu安装搞砸了。唉。无论如何,这很有魅力。非常感谢!
$this->User->BusinessUnitsUser->saveAssociated($this->request->data);