public function getBaseQuery(QueryBuilder $query, EntityDefinition $definition, Context $context): QueryBuilder
    {
        $table = $definition->getEntityName();

        $query->from(self::escape($table));

        $useVersionFallback = (
            // only applies for versioned entities
            $definition->isVersionAware()
            // only add live fallback if the current version isn't the live version
            && $context->getVersionId() !== Defaults::LIVE_VERSION
            // sub entities have no live fallback
            && $definition->getParentDefinition() === null
        );

        if ($useVersionFallback) {
            $this->joinVersion($query, $definition, $definition->getEntityName(), $context);
        } elseif ($definition->isVersionAware()) {
            $versionIdField = array_filter(
                $definition->getPrimaryKeys()->getElements(),
                function ($f) {
                    return $f instanceof VersionField || $f instanceof ReferenceVersionField;
                }
            );

            if (!$versionIdField) {
                throw new \RuntimeException('Missing `VersionField` in `' . $definition->getClass() . '`');
            }

            /** @var FkField|null $versionIdField */
            $versionIdField = array_shift($versionIdField);

            $query->andWhere(self::escape($table) . '.' . self::escape($versionIdField->getStorageName()) . ' = :version');
            $query->setParameter('version', Uuid::fromHexToBytes($context->getVersionId()));
        }

        $this->addRuleCondition($query, $definition, $context);

        return $query;
    }
public function getBaseQuery(QueryBuilder $query, EntityDefinition $definition, Context $context): QueryBuilder
    {
        $table = $definition->getEntityName();

        $query->from(self::escape($table));

        $useVersionFallback = (
            // only applies for versioned entities
            $definition->isVersionAware()
            // only add live fallback if the current version isn't the live version
            && $context->getVersionId() !== Defaults::LIVE_VERSION
            // sub entities have no live fallback
            && $definition->getParentDefinition() === null
        );

        if ($useVersionFallback) {
            $this->joinVersion($query, $definition, $definition->getEntityName(), $context);
        } elseif ($definition->isVersionAware()) {
            $versionIdField = array_filter(
                $definition->getPrimaryKeys()->getElements(),
                function ($f) {
                    return $f instanceof VersionField || $f instanceof ReferenceVersionField;
                }
            );

            if (!$versionIdField) {
                throw new \RuntimeException('Missing `VersionField` in `' . $definition->getClass() . '`');
            }

            /** @var FkField|null $versionIdField */
            $versionIdField = array_shift($versionIdField);

            $query->andWhere(self::escape($table) . '.' . self::escape($versionIdField->getStorageName()) . ' = :version');
            $query->setParameter('version', Uuid::fromHexToBytes($context->getVersionId()));
        }

        $this->addRuleCondition($query, $definition, $context);

        return $query;
    }
public function getBaseQuery ( QueryBuilder $ query , EntityDefinition $ definition , Context $ context ) : QueryBuilder { $ table = $ definition -> getEntityName ( ) ; $ query -> from ( self :: escape ( $ table ) ) ; $ useVersionFallback = ( // only applies for versioned entities $ definition -> isVersionAware ( ) // only add live fallback if the current version isn't the live version && $ context -> getVersionId ( ) !== Defaults :: LIVE_VERSION // sub entities have no live fallback && $ definition -> getParentDefinition ( ) === null ) ; if ( $ useVersionFallback ) { $ this -> joinVersion ( $ query , $ definition , $ definition -> getEntityName ( ) , $ context ) ; } elseif ( $ definition -> isVersionAware ( ) ) { $ versionIdField = array_filter ( $ definition -> getPrimaryKeys ( ) -> getElements ( ) , function ( $ f ) { return $ f instanceof VersionField || $ f instanceof ReferenceVersionField ; } ) ; if ( ! $ versionIdField ) { throw new \ RuntimeException ( 'Missing `VersionField` in `' . $ definition -> getClass ( ) . '`' ) ; } /** @var FkField|null $versionIdField */ $ versionIdField = array_shift ( $ versionIdField ) ; $ query -> andWhere ( self :: escape ( $ table ) . '.' . self :: escape ( $ versionIdField -> getStorageName ( ) ) . ' = :version' ) ; $ query -> setParameter ( 'version' , Uuid :: fromHexToBytes ( $ context -> getVersionId ( ) ) ) ; } $ this -> addRuleCondition ( $ query , $ definition , $ context ) ; return $ query ; }
Creates the basic root query for the provided entity definition and application context.
It considers the current context version.
Creates the basic root query for the provided entity definition and application context . It considers the current context version .