2017-10-18 102 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