From bf6655a534a6775d30cafa67bd801276bda1d98d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 13 Aug 2024 23:45:21 +0200 Subject: =?UTF-8?q?VERSION=200.2=20doctrine=20ORM=20et=20entit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orm/src/Persisters/SqlValueVisitor.php | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 vendor/doctrine/orm/src/Persisters/SqlValueVisitor.php (limited to 'vendor/doctrine/orm/src/Persisters/SqlValueVisitor.php') diff --git a/vendor/doctrine/orm/src/Persisters/SqlValueVisitor.php b/vendor/doctrine/orm/src/Persisters/SqlValueVisitor.php new file mode 100644 index 0000000..7f987ad --- /dev/null +++ b/vendor/doctrine/orm/src/Persisters/SqlValueVisitor.php @@ -0,0 +1,88 @@ +getValueFromComparison($comparison); + + $this->values[] = $value; + $this->types[] = [$comparison->getField(), $value, $comparison->getOperator()]; + + return null; + } + + /** + * Converts a composite expression into the target query language output. + * + * {@inheritDoc} + */ + public function walkCompositeExpression(CompositeExpression $expr) + { + foreach ($expr->getExpressionList() as $child) { + $this->dispatch($child); + } + + return null; + } + + /** + * Converts a value expression into the target query language part. + * + * {@inheritDoc} + */ + public function walkValue(Value $value) + { + return null; + } + + /** + * Returns the Parameters and Types necessary for matching the last visited expression. + * + * @return mixed[][] + * @psalm-return array{0: array, 1: array>} + */ + public function getParamsAndTypes(): array + { + return [$this->values, $this->types]; + } + + /** + * Returns the value from a Comparison. In case of a CONTAINS comparison, + * the value is wrapped in %-signs, because it will be used in a LIKE clause. + */ + protected function getValueFromComparison(Comparison $comparison): mixed + { + $value = $comparison->getValue()->getValue(); + + return match ($comparison->getOperator()) { + Comparison::CONTAINS => '%' . $value . '%', + Comparison::STARTS_WITH => $value . '%', + Comparison::ENDS_WITH => '%' . $value, + default => $value, + }; + } +} -- cgit v1.2.3