我正在创建一个model_admin菜单来管理订单。 'Order'数据对象与'Package'具有 Has-Many 关系,而'Package'与'Product'具有 Has-Many 关系。 我在Order和Package中使用gridfield关系编辑器来添加/链接新的'Package'和'Product'。因此,基本上该过程是单击“添加订单”,然后单击“添加包”,然后单击“添加产品”,然后填写产品信息。
在此之前,一切正常,但是当我输入所有产品字段并点击时创建错误'未捕获LogicException:无法在UnsavedRelationList上调用byID'被抛出。 我理解这是因为尚未创建“包裹”和“订单”,因此无法将产品与它们相关联。
当然我可以先创建订单,然后创建包,然后添加'产品',然后一切正常。然而,这并不直观,它应该将产品添加到包然后创建订单。我不知道是否有任何方法可以实现我的要求,或者如果在model_admin形式中使用gridfields不是正确的解决方案。
期待任何建议。谢谢。
答案 0 :(得分:1)
这通常意味着您在保存核心记录之前尝试对多人或多对多关系做某事。检查onBeforeWrite处理程序。如果$this->isInDB()
为假,我经常发现隐藏相关列表的网格域会很有帮助。