Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP保存一个新的规范化HABTM模型并在解析表中使用它_Php_Cakephp_Has And Belongs To Many - Fatal编程技术网

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