Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/cakephp/4.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:间接关联模型的缺点_Cakephp_Model_Form Helpers_Model Associations - Fatal编程技术网

CakePHP:间接关联模型的缺点

CakePHP:间接关联模型的缺点,cakephp,model,form-helpers,model-associations,Cakephp,Model,Form Helpers,Model Associations,我在处理cakephp中的间接关联模型时遇到了一些问题。我当前的型号设置如下所示: Deliveries hasOne License License belongsTo Delivery License hasAndBelongsToMany Product (and vice-versa) License hasAndBelongsToMany ProductOption (and vice-versa) 我试图将所有这些模型的信息保存在一个表单中。我遇到的缺点如下: 表单助手似乎只能看到

我在处理cakephp中的间接关联模型时遇到了一些问题。我当前的型号设置如下所示:

Deliveries hasOne License
License belongsTo Delivery
License hasAndBelongsToMany Product (and vice-versa)
License hasAndBelongsToMany ProductOption (and vice-versa)
我试图将所有这些模型的信息保存在一个表单中。我遇到的缺点如下:

  • 表单助手似乎只能看到一层深的字段类型

  • saveAll()似乎只能将记录保存一级(对于多个模型表单)

  • 我正在到处寻找这些问题的解决方案,但由于我是CakePHP新手,我不确定处理这些问题的最新方法或“正确”方法是什么

    任何建议都将不胜感激。谢谢大家!

    编辑:我已在此处将代码发布到失败的尝试:

    saveAll()似乎只能将记录保存一级(对于多个模型表单)

    我在过去偶然发现了这个限制,当时我选择通过将我的表单拆分为多个较小的表单来解决它

    在使用saveAll和InnoDB表时,需要记住的一点是,您将获得原子事务,因为如果Cake无法提交对数据库的更改,它将执行回滚

    因此,虽然您显然可以使用几行自己的代码来解决这个问题(因为Cake的saveAll one liner不符合预期),但如果需要事务,您将不得不花费更多的时间

    saveAll()似乎只能将记录保存一级(对于多个模型表单)

    我在过去偶然发现了这个限制,当时我选择通过将我的表单拆分为多个较小的表单来解决它

    在使用saveAll和InnoDB表时,需要记住的一点是,您将获得原子事务,因为如果Cake无法提交对数据库的更改,它将执行回滚


    因此,虽然你可以用几行你自己的代码来解决这个问题(因为Cake的saveAll one liner没有达到预期效果),但如果交易是一项要求,你将不得不花费更多的时间。

    嗨,我知道这是一篇老文章,但我想我会发布这篇文章来帮助其他人,从CakePHP 2.1开始,您可以使用调用saveAll()上的选项保存多个级别的模型关联,更多详细信息如下:

    例如:

    $this->MyModel->saveAll($this->request->data, array('deep'=>true));
    

    至于FormHelper的限制,我和你一样迷茫,我可能会求助于手动设置输入类型,因为我的字段不需要太多验证。

    嗨,我知道这是一篇老文章,但我想我会发布这篇文章来帮助其他人,从CakePHP 2.1开始,您可以使用调用saveAll()上的选项保存多个级别的模型关联,更多详细信息如下:

    例如:

    $this->MyModel->saveAll($this->request->data, array('deep'=>true));
    

    至于FormHelper限制,我和你一样迷茫,我可能会求助于手动设置输入类型,因为我的字段不需要太多验证。

    你能从表单中发布一些代码吗?在这种情况下,许可证又意味着什么?我的公司通常会实际“交付”软件“许可证”,让客户运行他们购买的不同类型的软件“产品”,以及购买的“产品选项”。您能从表单中发布一些代码吗?在这种情况下,许可证意味着什么?我的公司通常会实际“交付”软件“许可证”,让客户运行他们购买的不同类型的软件“产品”,以及购买的“产品选项”。