未捕获的 LogicException:无法在 UnsavedRelationList 上调用 byID

Uncaught LogicException: byID can't be called on an UnsavedRelationList

我正在创建一个 model_admin 菜单来管理订单。 'Order' 数据对象与 'Package' 具有 Has-Many 关系,而 'Package' 具有 Has-Many[=20] =] 与 'Product' 的关系。 我在 add/link 新 'Package' 和 'Product' 的订单和打包中使用网格字段关系编辑器。所以基本上流程就是点击'Add Order'然后点击'Add Package'然后点击'Add Product'然后填写产品信息。

到目前为止,一切正常,但是当我输入所有产品字段并单击“创建”时,抛出错误“Uncaught LogicException: byID can't be called on an UnsavedRelationList”。 我理解这是因为 'Package' 和 'Order' 尚未创建,因此无法将产品与它们相关联。

当然我可以先创建订单,然后创建包,然后添加 'Product',然后一切正常。然而,这并不直观,它应该将产品添加到包中,然后创建订单。我不知道是否有任何方法可以实现我的要求,或者在 model_admin 表单中使用网格字段是否不是正确的解决方案。

期待任何建议。谢谢。

这通常意味着您正在尝试在保存核心记录之前对多对多或多对多关系执行某些操作。检查你的 onBeforeWrite 处理程序。如果 $this->isInDB() 为假,我经常发现隐藏相关列表的网格字段很有帮助。