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/SqlExpressionVisitor.php | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 vendor/doctrine/orm/src/Persisters/SqlExpressionVisitor.php (limited to 'vendor/doctrine/orm/src/Persisters/SqlExpressionVisitor.php') diff --git a/vendor/doctrine/orm/src/Persisters/SqlExpressionVisitor.php b/vendor/doctrine/orm/src/Persisters/SqlExpressionVisitor.php new file mode 100644 index 0000000..df60f6a --- /dev/null +++ b/vendor/doctrine/orm/src/Persisters/SqlExpressionVisitor.php @@ -0,0 +1,79 @@ +getField(); + $value = $comparison->getValue()->getValue(); // shortcut for walkValue() + + if ( + isset($this->classMetadata->associationMappings[$field]) && + $value !== null && + ! is_object($value) && + ! in_array($comparison->getOperator(), [Comparison::IN, Comparison::NIN], true) + ) { + throw MatchingAssociationFieldRequiresObject::fromClassAndAssociation( + $this->classMetadata->name, + $field, + ); + } + + return $this->persister->getSelectConditionStatementSQL($field, $value, null, $comparison->getOperator()); + } + + /** + * Converts a composite expression into the target query language output. + * + * @throws RuntimeException + */ + public function walkCompositeExpression(CompositeExpression $expr): string + { + $expressionList = []; + + foreach ($expr->getExpressionList() as $child) { + $expressionList[] = $this->dispatch($child); + } + + return match ($expr->getType()) { + CompositeExpression::TYPE_AND => '(' . implode(' AND ', $expressionList) . ')', + CompositeExpression::TYPE_OR => '(' . implode(' OR ', $expressionList) . ')', + CompositeExpression::TYPE_NOT => 'NOT (' . $expressionList[0] . ')', + default => throw new RuntimeException('Unknown composite ' . $expr->getType()), + }; + } + + /** + * Converts a value expression into the target query language part. + */ + public function walkValue(Value $value): string + { + return '?'; + } +} -- cgit v1.2.3