Skip to content

Commit 03474c9

Browse files
Move escapeSql to driver implementations. (#104)
* Move escapeSql to driver implementations.
1 parent eb91e99 commit 03474c9

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

src/Builder/LikeConditionBuilder.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
final class LikeConditionBuilder extends AbstractLikeConditionBuilder
1616
{
17-
protected string|null $escapeCharacter = '!';
17+
private string|null $escapeCharacter = '!';
1818

1919
/**
2020
* `\` is initialized in {@see buildLikeCondition()} method since we need to choose replacement value based on
@@ -28,7 +28,7 @@ final class LikeConditionBuilder extends AbstractLikeConditionBuilder
2828

2929
public function __construct(private QueryBuilderInterface $queryBuilder)
3030
{
31-
parent::__construct($queryBuilder);
31+
parent::__construct($queryBuilder, $this->getEscapeSql());
3232
}
3333

3434
/**
@@ -46,4 +46,17 @@ public function build(LikeConditionInterface $expression, array &$params = []):
4646

4747
return parent::build($expression, $params);
4848
}
49+
50+
/**
51+
* @return string character used to escape special characters in LIKE conditions.
52+
* By default, it's assumed to be `!`.
53+
*/
54+
private function getEscapeSql(): string
55+
{
56+
if ($this->escapeCharacter !== null) {
57+
return " ESCAPE '{$this->escapeCharacter}'";
58+
}
59+
60+
return '';
61+
}
4962
}

0 commit comments

Comments
 (0)