Final Class Yiisoft\Db\Oracle\DQLQueryBuilder
| Inheritance | Yiisoft\Db\Oracle\DQLQueryBuilder » Yiisoft\Db\QueryBuilder\AbstractDQLQueryBuilder |
|---|
Implements a DQL (Data Query Language) SQL statements for Oracle Server.
Public Methods
Protected Methods
| Method | Description | Defined By |
|---|---|---|
| defaultExpressionBuilders() | Yiisoft\Db\Oracle\DQLQueryBuilder |
Method Details
| public string buildFrom ( array|null $tables, array &$params ) | ||
| $tables | array|null | |
| $params | array | |
public function buildFrom(?array $tables, array &$params): string
{
if (empty($tables)) {
return 'FROM DUAL';
}
return parent::buildFrom($tables, $params);
}
| public string buildOrderByAndLimit ( string $sql, array $orderBy, \Yiisoft\Db\Expression\ExpressionInterface|integer|null $limit, \Yiisoft\Db\Expression\ExpressionInterface|integer|null $offset, array &$params = [] ) | ||
| $sql | string | |
| $orderBy | array | |
| $limit | \Yiisoft\Db\Expression\ExpressionInterface|integer|null | |
| $offset | \Yiisoft\Db\Expression\ExpressionInterface|integer|null | |
| $params | array | |
public function buildOrderByAndLimit(
string $sql,
array $orderBy,
ExpressionInterface|int|null $limit,
ExpressionInterface|int|null $offset,
array &$params = [],
): string {
$orderByString = $this->buildOrderBy($orderBy, $params);
if ($orderByString !== '') {
$sql .= $this->separator . $orderByString;
}
$filters = [];
if (!empty($offset)) {
$filters[] = 'rowNumId > '
. ($offset instanceof ExpressionInterface ? $this->buildExpression($offset) : (string) $offset);
}
if ($limit !== null) {
$filters[] = 'rownum <= '
. ($limit instanceof ExpressionInterface ? $this->buildExpression($limit) : (string) $limit);
}
if (empty($filters)) {
return $sql;
}
$filter = implode(' AND ', $filters);
return <<<SQL
WITH USER_SQL AS ($sql), PAGINATION AS (SELECT USER_SQL.*, rownum as rowNumId FROM USER_SQL)
SELECT * FROM PAGINATION WHERE $filter
SQL;
}
| public string buildWithQueries ( array $withQueries, array &$params ) | ||
| $withQueries | array | |
| $params | array | |
public function buildWithQueries(array $withQueries, array &$params): string
{
$withQueries = array_map(
static fn(WithQuery $withQuery) => new WithQuery(
$withQuery->query,
$withQuery->alias,
false,
),
$withQueries,
);
return parent::buildWithQueries($withQueries, $params);
}
| protected array defaultExpressionBuilders ( ) |
protected function defaultExpressionBuilders(): array
{
return [
...parent::defaultExpressionBuilders(),
In::class => InBuilder::class,
NotIn::class => InBuilder::class,
Like::class => LikeBuilder::class,
NotLike::class => LikeBuilder::class,
ArrayMerge::class => ArrayMergeBuilder::class,
Longest::class => LongestBuilder::class,
Shortest::class => ShortestBuilder::class,
];
}
| public string selectExists ( string $rawSql ) | ||
| $rawSql | string | |
public function selectExists(string $rawSql): string
{
return 'SELECT CASE WHEN EXISTS(' . $rawSql . ') THEN 1 ELSE 0 END AS "0" FROM DUAL';
}
Signup or Login in order to comment.