Bravo3\Orm\Services\IndexManager::traversePersistIndices PHP Метод

traversePersistIndices() приватный Метод

Traverse an array of indices and persist them
private traversePersistIndices ( array $indices, object $entity, Reader $reader, string $local_id )
$indices array
$entity object
$reader Bravo3\Orm\Services\Io\Reader
$local_id string
    private function traversePersistIndices(array $indices, $entity, Reader $reader, $local_id)
    {
        $is_proxy = $entity instanceof OrmProxyInterface;
        foreach ($indices as $index) {
            $index_value = $reader->getIndexValue($index);
            if ($is_proxy) {
                /** @var OrmProxyInterface $entity */
                $new_id = $local_id != $entity->getOriginalId();
                $original_value = $entity->getIndexOriginalValue($index->getName());
                if ($original_value == $index_value) {
                    // Don't skip if ID has changed, but no need to delete any keys
                    if (!$new_id && !$this->entity_manager->getMaintenanceMode()) {
                        // Persisted value is indifferent, nothing to do
                        continue;
                    }
                } else {
                    // Former index is redundant, remove it
                    $this->getDriver()->clearSingleValueIndex($this->getKeyScheme()->getIndexKey($index, $original_value));
                }
            }
            $key = $this->getKeyScheme()->getIndexKey($index, $index_value);
            $value = $local_id;
            $this->getDriver()->setSingleValueIndex($key, $value);
        }
    }