0 follower

Final Class Yiisoft\Db\Mysql\DQLQueryBuilder

InheritanceYiisoft\Db\Mysql\DQLQueryBuilder » Yiisoft\Db\QueryBuilder\AbstractDQLQueryBuilder

Implements a DQL (Data Query Language) SQL statements for MySQL, MariaDB.

Public Methods

Hide inherited methods

Method Description Defined By
buildLimit() Yiisoft\Db\Mysql\DQLQueryBuilder

Method Details

Hide inherited methods

buildLimit() public method

public string buildLimit ( \Yiisoft\Db\Expression\ExpressionInterface|integer|null $limit, \Yiisoft\Db\Expression\ExpressionInterface|integer|null $offset )
$limit \Yiisoft\Db\Expression\ExpressionInterface|integer|null
$offset \Yiisoft\Db\Expression\ExpressionInterface|integer|null

                public function buildLimit(ExpressionInterface|int|null $limit, ExpressionInterface|int|null $offset): string
{
    if (!empty($offset)) {
        /**
         * Limit isn't optional in MySQL.
         *
         * @link https://stackoverflow.com/a/271650/1106908
         * @link https://dev.mysql.com/doc/refman/5.0/en/select.html#idm47619502796240
         */
        $limit = $limit instanceof ExpressionInterface
            ? $this->buildExpression($limit)
            : $limit ?? '18446744073709551615'; // 2^64-1
        $offset = $offset instanceof ExpressionInterface
            ? $this->buildExpression($offset)
            : (string) $offset;
        return "LIMIT $limit OFFSET $offset";
    }
    if ($limit !== null) {
        $limit = $limit instanceof ExpressionInterface ? $this->buildExpression($limit) : (string) $limit;
        return "LIMIT $limit";
    }
    return '';
}

            
defaultExpressionBuilders() protected method

protected array defaultExpressionBuilders ( )

                protected function defaultExpressionBuilders(): array
{
    return [
        ...parent::defaultExpressionBuilders(),
        JsonOverlaps::class => JsonOverlapsBuilder::class,
        Like::class => LikeBuilder::class,
        NotLike::class => LikeBuilder::class,
        ArrayMerge::class => ArrayMergeBuilder::class,
        Longest::class => LongestBuilder::class,
        Shortest::class => ShortestBuilder::class,
    ];
}