我在处理cakephp中的间接关联模型时遇到了一些问题。我目前的模型设置如下:
Deliveries hasOne License
License belongsTo Delivery
License hasAndBelongsToMany Product (and vice-versa)
License hasAndBelongsToMany ProductOption (and vice-versa)
我正在尝试在ONE表单中保存有关所有这些模型的信息。我遇到的缺点如下:
表单助手似乎只能看到字段类型深一层。
saveAll()似乎只能保存一级深度的记录(对于多个模型表单)。
我到处寻找这些问题的解决方案,但由于我是CakePHP的新手,我不确定最新方法或“正确”方法是什么来处理这些问题。
非常感谢任何建议。谢谢大家!
编辑:我在此处发布了失败尝试的代码:http://bin.cakephp.org/saved/58501
答案 0 :(得分:0)
saveAll()似乎只能保存一级深度的记录(对于多个模型表单)。
我在过去偶然发现了这个限制,当时选择通过将我的表格分成多个较小的形式来解决这个问题。
使用saveAll和InnoDB表时要记住的一件事是你得到原子事务,因为如果它无法提交对数据库的更改,Cake将执行回滚。
所以,虽然你可以用几行自己的代码来解决这个问题(因为Cake的saveAll one-liner不符合预期),如果需要交易,你将不得不花更多的时间。
答案 1 :(得分:0)
嗨,我知道这是一篇很老的帖子,但我认为我会发布这篇文章以帮助其他人,从CakePHP 2.1开始,您可以使用调用saveAll()的选项保存多个级别的模型关联,更多详细信息:{ {3}}
示例:
$this->MyModel->saveAll($this->request->data, array('deep'=>true));
至于FormHelper限制,我和你一样迷失,我可能会手动设置输入类型,因为我的字段不需要太多验证。