public static function getCascadeQueue(IEntity $entity, IModel $model, $withCascade) { try { self::visitEntity($entity, $model, $withCascade); for ($i = 0; $i < count(self::$inputQueue); $i++) { $value = self::$inputQueue[$i]; if ($value instanceof IEntity) { self::visitEntity($value, $model); } else { self::visitRelationship($value, $model); } } return self::$outputQueue; } finally { self::$inputQueue = []; self::$outputQueue = []; } }
/** @inheritdoc */ public function persist(IEntity $entity, $withCascade = true) { $queue = PersistenceHelper::getCascadeQueue($entity, $this, $withCascade); foreach ($queue as $object) { if ($object instanceof IEntity) { $repository = $this->configuration[2][get_class($object)]; $this->loader->getRepository($repository)->doPersist($object); } elseif ($object instanceof IRelationshipCollection) { $object->doPersist(); } } return $entity; }