2

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

Deliveries hasOne License
License belongsTo Delivery
License hasAndBelongsToMany Product (and vice-versa)
License hasAndBelongsToMany ProductOption (and vice-versa)

我正在尝试将有关所有这些模型的信息保存在一个表单中。我遇到的缺点如下:

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

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

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

非常感谢任何建议。谢谢你们!

编辑:我在这里发布了我失败的尝试的代码:http: //bin.cakephp.org/saved/58501

4

2 回答 2

0

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

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

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

因此,虽然您显然可以使用自己的几行代码来解决这个问题(因为 Cake 的 saveAll 单行代码没有达到预期),但如果事务是必需的,您将不得不花费更多时间。

于 2010-05-12T13:11:03.560 回答
0

嗨,我知道这是一篇旧帖子,但我想我会发布它来帮助其他人,从 CakePHP 2.1 开始,您可以使用调用 saveAll() 的选项保存多个级别的模型关联,更多详细信息请参见:http:// book.cakephp.org/2.0/en/appendices/new-features-in-cakephp-2-1.html#model-saveall-model-saveassociated-model-validateassociated

例子:

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

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

于 2014-07-01T11:05:02.730 回答