Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
- Chg #399: Rename `insertWithReturningPks()` to `insertReturningPks()` in `Command` and `DMLQueryBuilder` classes (@Tigrov)
- Enh #403: Refactor `DMLQueryBuilder::upsert()`, allow use `EXCLUDED` table alias to access inserted values (@Tigrov)
- Enh #405: Provide `yiisoft/db-implementation` virtual package (@vjik)
- Enh #407: Adapt to specific condition interfaces removing in `yiisoft/db` package (@vjik)
- Enh #407, #408: Adapt to conditions refactoring in `yiisoft/db` package (@vjik)

## 1.2.0 March 21, 2024

Expand Down
20 changes: 14 additions & 6 deletions src/Builder/JsonOverlapsConditionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,24 @@
use InvalidArgumentException;
use Yiisoft\Db\Exception\InvalidConfigException;
use Yiisoft\Db\Exception\NotSupportedException;
use Yiisoft\Db\Expression\ExpressionBuilderInterface;
use Yiisoft\Db\Expression\ExpressionInterface;
use Yiisoft\Db\Expression\JsonExpression;
use Yiisoft\Db\QueryBuilder\Condition\Builder\AbstractOverlapsConditionBuilder;
use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\QueryBuilderInterface;

/**
* Builds expressions for {@see JsonOverlapsCondition} for MySQL Server.
*
* @extends AbstractOverlapsConditionBuilder<JsonOverlapsCondition>
* @implements ExpressionBuilderInterface<JsonOverlapsCondition>
*/
final class JsonOverlapsConditionBuilder extends AbstractOverlapsConditionBuilder
final class JsonOverlapsConditionBuilder implements ExpressionBuilderInterface
{
public function __construct(
private readonly QueryBuilderInterface $queryBuilder,
) {
}

/**
* Build SQL for {@see JsonOverlapsCondition}.
*
Expand All @@ -32,8 +38,10 @@ final class JsonOverlapsConditionBuilder extends AbstractOverlapsConditionBuilde
*/
public function build(ExpressionInterface $expression, array &$params = []): string
{
$column = $this->prepareColumn($expression->getColumn());
$values = $expression->getValues();
$column = $expression->column instanceof ExpressionInterface
? $this->queryBuilder->buildExpression($expression->column)
: $this->queryBuilder->getQuoter()->quoteColumnName($expression->column);
$values = $expression->values;

if (!$values instanceof ExpressionInterface) {
$values = new JsonExpression($values);
Expand Down
4 changes: 2 additions & 2 deletions src/Builder/LikeConditionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
/**
* Build an object of {@see LikeCondition} into SQL expressions for MySQL Server.
*/
final class LikeConditionBuilder extends \Yiisoft\Db\QueryBuilder\Condition\Builder\LikeConditionBuilder
final class LikeConditionBuilder extends \Yiisoft\Db\QueryBuilder\Condition\LikeConditionBuilder
{
protected function prepareColumn(LikeCondition $expression, array &$params): string
{
$column = parent::prepareColumn($expression, $params);

if ($expression->getCaseSensitive() === true) {
if ($expression->caseSensitive === true) {
$column = 'BINARY ' . $column;
}

Expand Down
2 changes: 1 addition & 1 deletion src/DQLQueryBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
use Yiisoft\Db\Mysql\Builder\JsonOverlapsConditionBuilder;
use Yiisoft\Db\Mysql\Builder\LikeConditionBuilder;
use Yiisoft\Db\QueryBuilder\AbstractDQLQueryBuilder;
use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\LikeCondition;

use function ctype_digit;
Expand Down
2 changes: 1 addition & 1 deletion tests/QueryBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
use Yiisoft\Db\Mysql\Tests\Support\TestTrait;
use Yiisoft\Db\Query\Query;
use Yiisoft\Db\Query\QueryInterface;
use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\JsonOverlapsCondition;
use Yiisoft\Db\Schema\Column\ColumnInterface;
use Yiisoft\Db\Tests\Common\CommonQueryBuilderTest;

Expand Down
Loading