From 2da56e22e61aaf66bc57ad323d748416577d15d8 Mon Sep 17 00:00:00 2001 From: Ousama Ben Younes Date: Tue, 21 Jul 2026 16:22:50 +0000 Subject: [PATCH 1/4] fix(doctrine): ignore associative values in exact filter --- src/Doctrine/Orm/Filter/ExactFilter.php | 4 ++ .../Orm/Tests/Filter/ExactFilterTest.php | 41 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/Doctrine/Orm/Tests/Filter/ExactFilterTest.php diff --git a/src/Doctrine/Orm/Filter/ExactFilter.php b/src/Doctrine/Orm/Filter/ExactFilter.php index dfaa415f0da..9bb96e413ee 100644 --- a/src/Doctrine/Orm/Filter/ExactFilter.php +++ b/src/Doctrine/Orm/Filter/ExactFilter.php @@ -36,6 +36,10 @@ public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $q $parameter = $context['parameter']; $value = $parameter->getValue(); + if (\is_array($value) && !array_is_list($value)) { + return; + } + if (null === $parameter->getProperty()) { throw new InvalidArgumentException(\sprintf('The filter parameter with key "%s" must specify a property. Please provide the property explicitly.', $parameter->getKey())); } diff --git a/src/Doctrine/Orm/Tests/Filter/ExactFilterTest.php b/src/Doctrine/Orm/Tests/Filter/ExactFilterTest.php new file mode 100644 index 00000000000..64730e85b89 --- /dev/null +++ b/src/Doctrine/Orm/Tests/Filter/ExactFilterTest.php @@ -0,0 +1,41 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Doctrine\Orm\Tests\Filter; + +use ApiPlatform\Doctrine\Orm\Filter\ExactFilter; +use ApiPlatform\Doctrine\Orm\Tests\Fixtures\Entity\Dummy; +use ApiPlatform\Doctrine\Orm\Util\QueryNameGenerator; +use ApiPlatform\Metadata\QueryParameter; +use Doctrine\ORM\QueryBuilder; +use PHPUnit\Framework\TestCase; + +final class ExactFilterTest extends TestCase +{ + private const ALIAS = 'o'; + private const ASSOCIATIVE_DATE_FILTER_VALUE = ['strictly_before' => '2026-07-20']; + private const DATE_PROPERTY = 'dummyDate'; + + public function testExactFilterIgnoresAssociativeArrayValues(): void + { + $queryBuilder = $this->createMock(QueryBuilder::class); + $queryBuilder->method('getRootAliases')->willReturn([self::ALIAS]); + $queryBuilder->expects($this->never())->method('andWhere'); + $queryBuilder->expects($this->never())->method('setParameter'); + + $parameter = (new QueryParameter(key: self::DATE_PROPERTY, property: self::DATE_PROPERTY)) + ->setValue(self::ASSOCIATIVE_DATE_FILTER_VALUE); + + (new ExactFilter())->apply($queryBuilder, new QueryNameGenerator(), Dummy::class, context: ['parameter' => $parameter]); + } +} From db1e3489f04e0d6eb2ffe9dcbe63c72d0fc83bf7 Mon Sep 17 00:00:00 2001 From: Ousama Ben Younes Date: Tue, 21 Jul 2026 16:26:54 +0000 Subject: [PATCH 2/4] ci: allow mcp sdk 0.7 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e1b841d1530..4772ec8fc31 100644 --- a/composer.json +++ b/composer.json @@ -142,7 +142,7 @@ "jangregor/phpstan-prophecy": "^2.1.11", "justinrainbow/json-schema": "^6.5.2", "laravel/framework": "^11.0 || ^12.0 || ^13.0", - "mcp/sdk": "^0.6", + "mcp/sdk": "^0.7", "orchestra/testbench": "^10.9 || ^11.0", "phpspec/prophecy-phpunit": "^2.2", "phpstan/extension-installer": "^1.1", From 537133c3419775ee744d421c69e872886176fab8 Mon Sep 17 00:00:00 2001 From: Ousama Ben Younes Date: Tue, 21 Jul 2026 16:29:43 +0000 Subject: [PATCH 3/4] ci: align mcp package sdk constraint --- src/Mcp/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mcp/composer.json b/src/Mcp/composer.json index a824d20b63d..608d3f2425b 100644 --- a/src/Mcp/composer.json +++ b/src/Mcp/composer.json @@ -30,7 +30,7 @@ "php": ">=8.2", "api-platform/metadata": "^5.0@alpha", "api-platform/json-schema": "^5.0@alpha", - "mcp/sdk": "^0.6", + "mcp/sdk": "^0.7", "symfony/object-mapper": "^7.4 || ^8.0", "symfony/polyfill-php85": "^1.32" }, From 16297e6174be810af7e6084d54cc369c25cd2e8a Mon Sep 17 00:00:00 2001 From: Ousama Ben Younes Date: Tue, 21 Jul 2026 19:33:30 +0000 Subject: [PATCH 4/4] ci: adapt laravel mcp controller wiring --- src/Laravel/ApiPlatformProvider.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Laravel/ApiPlatformProvider.php b/src/Laravel/ApiPlatformProvider.php index 4cc6fd7aa1f..aaca8987c0f 100644 --- a/src/Laravel/ApiPlatformProvider.php +++ b/src/Laravel/ApiPlatformProvider.php @@ -193,6 +193,7 @@ use PHPStan\PhpDocParser\Parser\PhpDocParser; use Psr\Log\LoggerInterface; use Symfony\AI\McpBundle\Controller\McpController; +use Symfony\AI\McpBundle\Http\MiddlewareFactory; use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory; use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; use Symfony\Component\HttpFoundation\RequestStack; @@ -1342,7 +1343,8 @@ private function registerMcp(): void $psrHttpFactory, $httpFoundationFactory, $psr17Factory, - $psr17Factory + $psr17Factory, + new MiddlewareFactory() ); }); }