GraphAware\Neo4j\OGM\Persister\FlushOperationProcessor::createLabeledNodesCreationStack PHP Méthode

createLabeledNodesCreationStack() private méthode

private createLabeledNodesCreationStack ( array $byLabelsMap )
$byLabelsMap array
    private function createLabeledNodesCreationStack(array $byLabelsMap)
    {
        $stack = Stack::create(self::TAG_NODES_CREATE);
        $statements = [];
        foreach ($byLabelsMap as $label => $entities) {
            foreach ($entities as $entity) {
                $query = sprintf('UNWIND {nodes} as node
                CREATE (n:`%s`) SET n += node.props', $label);
                $metadata = $this->em->getClassMetadataFor(get_class($entity));
                $oid = spl_object_hash($entity);
                $labeledProperties = $metadata->getLabeledPropertiesToBeSet($entity);
                $lblKey = sprintf('%s_%s', $metadata->getLabel(), implode('_', array_map(function (LabeledPropertyMetadata $labeledPropertyMetadata) {
                    return $labeledPropertyMetadata->getLabelName();
                }, $labeledProperties)));
                foreach ($labeledProperties as $labeledPropertyMetadata) {
                    $query .= sprintf(' SET n:`%s`', $labeledPropertyMetadata->getLabelName());
                }
                $query .= ' RETURN id(n) as id, node.oid as oid';
                $statements[$lblKey]['query'] = $query;
                $statements[$lblKey]['nodes'][] = ['props' => $metadata->getPropertyValuesArray($entity), 'oid' => $oid];
            }
        }
        foreach ($statements as $key => $statement) {
            $stack->push($statement['query'], ['nodes' => $statement['nodes']], $key);
        }
        return $stack;
    }