2017-10-18 83 views
0

我们有2种型号:yii2验证相关的模型

  • 订购
  • 的OrderItems

所以节省了相关的OrderItems我需要从母订单检查一些属性时。

订单具有属性:“time_begin”和“time_end”,OrderItem有其自己的“time_begin”和“time_end”。所以规则是OrderItem的时间必须在父Order的时间之间。

例如,我有以下情况:

  • 用户改变了以更大的价值“TIME_END”,并且改变OrderItem的的“TIME_END”,以更大的价值太
  • 尽量节省所有相关数据(订单及其所有物品)
  • 订单验证成功通过
  • 但是当OrderItem尝试验证其“time_end”时,它将采用Order-> time_end属性的旧值并给出验证错误! !

任何解决方案??? 如何让OrderItem知道订单已更改?

+0

只需要创建你自己的验证器。 – lucas

回答

0

这是一个复杂的问题,你可以这样考虑: - 不要同时调用Order :: validate()和OrderItems :: validate()。 - Order :: validate() - > Order :: save()首先比OrderItems :: validate() - > OrderItems :: save()(这是失败的,记得在需要时还原Order)

+0

感谢您的回答!我们甚至使用事务来保存相关模型,所以如果OrderItems :: validate()或save()中出现错误,我们可以回滚它。 – Vld