/** * Overwrite to set the properties dirty as well. * * @private */ public function setDirty($keepChanges = false, $targetState = false) { parent::setDirty($keepChanges, $targetState); foreach ($this->properties as $property) { if ($keepChanges && self::STATE_NEW !== $property->getState()) { // if we want to keep changes, we do not want to set new properties dirty. $property->setDirty($keepChanges, $targetState); } } }