/** * {@inheritdoc} */ public function getSql(SqlWalker $sqlWalker) { $stringPrimary = $sqlWalker->walkStringPrimary($this->stringPrimary); $platform = $sqlWalker->getConnection()->getDatabasePlatform(); $trimMode = $this->getTrimMode(); $trimChar = $this->trimChar !== false ? $sqlWalker->getConnection()->quote($this->trimChar) : false; return $platform->getTrimExpression($stringPrimary, $trimMode, $trimChar); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $pos = AbstractPlatform::TRIM_UNSPECIFIED; if ($this->leading) { $pos = AbstractPlatform::TRIM_LEADING; } else { if ($this->trailing) { $pos = AbstractPlatform::TRIM_TRAILING; } else { if ($this->both) { $pos = AbstractPlatform::TRIM_BOTH; } } } return $sqlWalker->getConnection()->getDatabasePlatform()->getTrimExpression($sqlWalker->walkStringPrimary($this->stringPrimary), $pos, $this->trimChar != false ? $sqlWalker->getConnection()->quote($this->trimChar) : false); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $platform = $sqlWalker->getConnection()->getDatabasePlatform(); if (!method_exists($platform, 'getStringAgg')) { return $sqlWalker->walkStringPrimary($this->firstStringPrimary); } return $platform->getStringAgg($sqlWalker->walkStringPrimary($this->firstStringPrimary), $sqlWalker->walkStringPrimary($this->secondStringPrimary)); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $optionalSecondSimpleArithmeticExpression = null; if ($this->secondSimpleArithmeticExpression !== null) { $optionalSecondSimpleArithmeticExpression = $sqlWalker->walkSimpleArithmeticExpression($this->secondSimpleArithmeticExpression); } return $sqlWalker->getConnection()->getDatabasePlatform()->getSubstringExpression($sqlWalker->walkStringPrimary($this->stringPrimary), $sqlWalker->walkSimpleArithmeticExpression($this->firstSimpleArithmeticExpression), $optionalSecondSimpleArithmeticExpression); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $platform = $sqlWalker->getConnection()->getDatabasePlatform(); $strings = array_map(function ($v) use($sqlWalker) { return $sqlWalker->walkStringPrimary($v); }, $this->strings); return call_user_func_array(array($platform, 'getConcatExpression'), $strings); }
/** * @param SqlWalker $sqlWalker * * @return string */ public function getSql(SqlWalker $sqlWalker) { $this->validatePlatform($sqlWalker->getConnection()->getDatabasePlatform()); if ($this->optionalExpression) { return sprintf('%s(%s, %s, %s)', $this->functionName, $this->firstGeomExpression->dispatch($sqlWalker), $this->secondGeomExpression->dispatch($sqlWalker), $this->optionalExpression->dispatch($sqlWalker)); } return sprintf('%s(%s, %s)', $this->functionName, $this->firstGeomExpression->dispatch($sqlWalker), $this->secondGeomExpression->dispatch($sqlWalker)); }
/** * @param \Doctrine\ORM\Query\SqlWalker $sqlWalker * @return string */ public function getSql(SqlWalker $sqlWalker) { $platform = $sqlWalker->getConnection()->getDatabasePlatform(); if ($platform instanceof PostgreSqlPlatform) { return $this->getPostgreSql($sqlWalker); } throw new NotImplementedException(); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $platform = $sqlWalker->getConnection()->getDatabasePlatform(); if (!method_exists($platform, 'getTranslateExpression')) { return $sqlWalker->walkStringPrimary($this->firstStringPrimary); } return $platform->getTranslateExpression($sqlWalker->walkStringPrimary($this->firstStringPrimary), $sqlWalker->walkStringPrimary($this->stringFrom), $sqlWalker->walkStringPrimary($this->stringTo)); }
public function getSql(SqlWalker $sqlWalker) { $p = $sqlWalker->getConnection()->getDatabasePlatform(); $pi = $p->getPiExpression(); // %F * ASIN(SQRT(POWER(SIN((%s - %s) * PI()/360), 2) + COS(%s * PI()/180) * COS(%s * PI()/180) * POWER(SIN((%s - %s) * PI()/360), 2))) $formula = "%F * ({$pi} / 2 - " . $p->getAcosExpression($p->getSqrtExpression('(' . $p->getSinExpression("(%s - %s) * {$pi} / 360") . ' * ' . $p->getSinExpression("(%s - %s) * {$pi} / 360") . ') + (' . $p->getCosExpression("%s * {$pi} / 180") . ' * ' . $p->getCosExpression("%s * {$pi} / 180") . ' * ' . $p->getSinExpression("(%s - %s) * {$pi} / 360") . ' * ' . $p->getSinExpression("(%s - %s) * {$pi} / 360") . ')')) . ')'; return sprintf($formula, Measure::EARTH_RADIUS_KM * 2.0, $sqlWalker->walkArithmeticPrimary($this->latOrigin), $sqlWalker->walkArithmeticPrimary($this->latPoint), $sqlWalker->walkArithmeticPrimary($this->latOrigin), $sqlWalker->walkArithmeticPrimary($this->latPoint), $sqlWalker->walkArithmeticPrimary($this->latOrigin), $sqlWalker->walkArithmeticPrimary($this->latPoint), $sqlWalker->walkArithmeticPrimary($this->lonOrigin), $sqlWalker->walkArithmeticPrimary($this->lonPoint), $sqlWalker->walkArithmeticPrimary($this->lonOrigin), $sqlWalker->walkArithmeticPrimary($this->lonPoint)); }
public function getSql(SqlWalker $sqlWalker) { $driver = $sqlWalker->getConnection()->getDriver()->getName(); if ($driver == 'pdo_sqlite') { return sprintf("CAST(STRFTIME('%s', %s) AS INTEGER)", $this->formats[$this->field], $this->source->dispatch($sqlWalker)); } else { return sprintf('EXTRACT(%s FROM %s %s)', $this->field, (string) $this->type, $this->source->dispatch($sqlWalker)); } }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $platform = $sqlWalker->getConnection()->getDatabasePlatform(); $args = array(); foreach ($this->concatExpressions as $expression) { $args[] = $sqlWalker->walkStringPrimary($expression); } return call_user_func_array(array($platform, 'getConcatExpression'), $args); }
/** * {@inheritdoc} */ public function getSql(SqlWalker $sqlWalker) { // This type is defined by ANSI SQL $targetType = 'VARCHAR'; // MySQL needs a CHAR type for string conversion (http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html) if ($sqlWalker->getConnection()->getDatabasePlatform()->getName() === 'mysql') { $targetType = 'CHAR'; } return 'CAST(' . $sqlWalker->walkSimpleArithmeticExpression($this->stringPrimary) . ' AS ' . $targetType . ')'; }
/** * @param SqlWalker $sqlWalker * * @return string */ public function getSql(SqlWalker $sqlWalker) { $this->validatePlatform($sqlWalker->getConnection()->getDatabasePlatform()); $result = sprintf('%s(%s', $this->functionName, $this->geomExpr[0]->dispatch($sqlWalker)); for ($i = 1, $size = count($this->geomExpr); $i < $size; $i++) { $result .= ', ' . $this->geomExpr[$i]->dispatch($sqlWalker); } $result .= ')'; return $result; }
/** * @param SqlWalker $sqlWalker * @return string * @throws QueryException */ public function getSql(SqlWalker $sqlWalker) { switch ($sqlWalker->getConnection()->getDatabasePlatform()->getName()) { case 'postgresql': return 'RANDOM()'; case 'mysql': return 'RAND()'; default: throw new QueryException("You can't use RANDOM()!"); } }
/** * @param SqlWalker $sqlWalker * @return string */ public function getSql(SqlWalker $sqlWalker) { $driver = $sqlWalker->getConnection()->getDriver()->getName(); $translationField = $this->stringField->dispatch($sqlWalker); $translationsAlias = explode('.', $translationField)[0]; $query = $translationField; if ($driver == 'pdo_pgsql') { $query = "string_agg(DISTINCT " . $translationField . "|| ' [' || " . $translationsAlias . ".locale || '] ', '<br>')"; } return $query; }
/** * {@inheritdoc} */ public function getSql(SqlWalker $s) { $platform = $s->getConnection()->getDatabasePlatform()->getName(); switch ($platform) { case 'postgresql': return sprintf('ST_Distance_Sphere(%s, %s)', $this->arg1->dispatch($s), $this->arg2->dispatch($s)); case 'sqlite': return sprintf('GreatCircleLength(MakeLine(%s, %s))', $this->arg1->dispatch($s), $this->arg2->dispatch($s)); } return sprintf(self::FORMULA, self::EARTH_RADIUS, $this->y($this->arg1->dispatch($s)), $this->y($this->arg2->dispatch($s)), $this->y($this->arg1->dispatch($s)), $this->y($this->arg2->dispatch($s)), $this->x($this->arg2->dispatch($s)), $this->x($this->arg1->dispatch($s))); }
/** * @override */ public function getSql(SqlWalker $sqlWalker) { switch (strtolower($this->unit->value)) { case 'day': return $sqlWalker->getConnection()->getDatabasePlatform()->getDateAddDaysExpression($this->firstDateExpression->dispatch($sqlWalker), $this->intervalExpression->dispatch($sqlWalker)); case 'month': return $sqlWalker->getConnection()->getDatabasePlatform()->getDateAddMonthExpression($this->firstDateExpression->dispatch($sqlWalker), $this->intervalExpression->dispatch($sqlWalker)); default: throw QueryException::semanticalError('DATE_ADD() only supports units of type day and month.'); } }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $platform = $sqlWalker->getConnection()->getDatabasePlatform(); $dqlAlias = $this->pathExpression->identificationVariable; $assocField = $this->pathExpression->field; $qComp = $sqlWalker->getQueryComponent($dqlAlias); $class = $qComp['metadata']; $assoc = $class->associationMappings[$assocField]; $tableAlias = $sqlWalker->getSQLTableAlias($class->getTableName(), $dqlAlias); return $tableAlias . '.' . reset($assoc['targetToSourceKeyColumns']); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $platform = $sqlWalker->getConnection()->getDatabasePlatform(); return $platform->getConcatExpression($sqlWalker->walkStringPrimary($this->_firstStringPrimary), $sqlWalker->walkStringPrimary($this->_secondStringPrimary)); /* $sql = 'CONCAT(' . $sqlWalker->walkStringPrimary($this->_firstStringPrimary) . ', ' . $sqlWalker->walkStringPrimary($this->_secondStringPrimary) . ')'; return $sql;*/ }
/** * @param SqlWalker $sqlWalker * * @return string */ public function getSql(SqlWalker $sqlWalker) { $this->validatePlatform($sqlWalker->getConnection()->getDatabasePlatform()); $result = sprintf('%s(%s, ', $this->functionName, $this->firstGeomExpression->dispatch($sqlWalker)); for ($i = 0, $size = count($this->geomExpressions); $i < $size; $i++) { if ($i > 0) { $result .= ', '; } $result .= $this->geomExpressions[$i]->dispatch($sqlWalker); } $result .= ')'; return $result; }
public function getSql(SqlWalker $sqlWalker) { $unit = strtolower($this->unit); if ($unit == "day") { return $sqlWalker->getConnection()->getDatabasePlatform()->getDateAddDaysExpression($this->firstDateExpression->dispatch($sqlWalker), $this->intervalExpression->dispatch($sqlWalker)); } else { if ($unit == "month") { return $sqlWalker->getConnection()->getDatabasePlatform()->getDateAddMonthExpression($this->firstDateExpression->dispatch($sqlWalker), $this->intervalExpression->dispatch($sqlWalker)); } else { throw QueryException::semanticalError('DATE_ADD() only supports units of type day and month.'); } } }
/** * @param SqlWalker $sqlWalker * * @return string */ public function getSql(SqlWalker $sqlWalker) { $this->validatePlatform($sqlWalker->getConnection()->getDatabasePlatform()); $result = sprintf('%s(', $this->functionName); for ($i = 0, $size = count($this->geomExpr); $i < $size;) { $result .= $this->geomExpr[$i]->dispatch($sqlWalker); if (++$i < $size) { $result .= ', '; } } $result .= ')'; return $result; }
public function getSql(SqlWalker $sqlWalker) { switch ($sqlWalker->getConnection()->getDriver()->getName()) { case 'pdo_pgsql': $sql = sprintf("LOWER(TRANSLATE(%s, '%s', '%s'))", $this->string->dispatch($sqlWalker), self::FROM, self::TO); break; case 'pdo_mysql': $sql = sprintf('%s COLLATE utf8_unicode_ci', $this->string->dispatch($sqlWalker)); break; default: $sql = sprintf('LOWER(%s)', $this->string->dispatch($sqlWalker)); break; } return $sql; }
/** * @override * @todo If the collection being counted is already joined, the SQL can be simpler (more efficient). */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $platform = $sqlWalker->getConnection()->getDatabasePlatform(); $dqlAlias = $this->collectionPathExpression->identificationVariable; $assocField = $this->collectionPathExpression->field; $qComp = $sqlWalker->getQueryComponent($dqlAlias); $class = $qComp['metadata']; $assoc = $class->associationMappings[$assocField]; $sql = 'SELECT COUNT(*) FROM '; if ($assoc['type'] == \Doctrine\ORM\Mapping\ClassMetadata::ONE_TO_MANY) { $targetClass = $sqlWalker->getEntityManager()->getClassMetadata($assoc['targetEntity']); $targetTableAlias = $sqlWalker->getSQLTableAlias($targetClass->table['name']); $sourceTableAlias = $sqlWalker->getSQLTableAlias($class->table['name'], $dqlAlias); $sql .= $targetClass->getQuotedTableName($platform) . ' ' . $targetTableAlias . ' WHERE '; $owningAssoc = $targetClass->associationMappings[$assoc['mappedBy']]; $first = true; foreach ($owningAssoc['targetToSourceKeyColumns'] as $targetColumn => $sourceColumn) { if ($first) { $first = false; } else { $sql .= ' AND '; } $sql .= $targetTableAlias . '.' . $sourceColumn . ' = ' . $sourceTableAlias . '.' . $class->getQuotedColumnName($class->fieldNames[$targetColumn], $platform); } } else { // many-to-many $targetClass = $sqlWalker->getEntityManager()->getClassMetadata($assoc['targetEntity']); $owningAssoc = $assoc['isOwningSide'] ? $assoc : $targetClass->associationMappings[$assoc['mappedBy']]; $joinTable = $owningAssoc['joinTable']; // SQL table aliases $joinTableAlias = $sqlWalker->getSQLTableAlias($joinTable['name']); $sourceTableAlias = $sqlWalker->getSQLTableAlias($class->table['name'], $dqlAlias); // join to target table $sql .= $targetClass->getQuotedJoinTableName($owningAssoc, $platform) . ' ' . $joinTableAlias . ' WHERE '; $joinColumns = $assoc['isOwningSide'] ? $joinTable['joinColumns'] : $joinTable['inverseJoinColumns']; $first = true; foreach ($joinColumns as $joinColumn) { if ($first) { $first = false; } else { $sql .= ' AND '; } $sourceColumnName = $class->getQuotedColumnName($class->fieldNames[$joinColumn['referencedColumnName']], $platform); $sql .= $joinTableAlias . '.' . $joinColumn['name'] . ' = ' . $sourceTableAlias . '.' . $sourceColumnName; } } return '(' . $sql . ')'; }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { $sql = 'TRIM('; if ($this->leading) { $sql .= 'LEADING '; } else { if ($this->trailing) { $sql .= 'TRAILING '; } else { if ($this->both) { $sql .= 'BOTH '; } } } if ($this->trimChar) { $sql .= $sqlWalker->getConnection()->quote($this->trimChar) . ' '; } return $sql . 'FROM ' . $sqlWalker->walkStringPrimary($this->stringPrimary) . ')'; }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { return $sqlWalker->getConnection()->getDatabasePlatform()->getModExpression($sqlWalker->walkSimpleArithmeticExpression($this->firstSimpleArithmeticExpression), $sqlWalker->walkSimpleArithmeticExpression($this->secondSimpleArithmeticExpression)); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { return $sqlWalker->getConnection()->getDatabasePlatform()->getMd5Expression($sqlWalker->walkStringPrimary($this->stringPrimary)); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { return $sqlWalker->getConnection()->getDatabasePlatform()->getCurrentDateSql(); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { return $sqlWalker->getConnection()->getDatabasePlatform()->getUpperExpression($sqlWalker->walkSimpleArithmeticExpression($this->stringPrimary)); }
/** * @override */ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { return $sqlWalker->getConnection()->getDatabasePlatform()->getLocateExpression($sqlWalker->walkStringPrimary($this->secondStringPrimary), $sqlWalker->walkStringPrimary($this->firstStringPrimary), $this->simpleArithmeticExpression ? $sqlWalker->walkSimpleArithmeticExpression($this->simpleArithmeticExpression) : false); }