From 6c910e7fccc32ec6db4d9420a9240a74a5e0f8b5 Mon Sep 17 00:00:00 2001 From: matthieu Date: Sun, 15 Mar 2026 20:11:54 +0100 Subject: [PATCH] fix : use native SQL for JSON roles query in PostgreSQL Co-Authored-By: Claude Opus 4.6 (1M context) --- src/Repository/UserRepository.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php index d18497d..d0681e1 100644 --- a/src/Repository/UserRepository.php +++ b/src/Repository/UserRepository.php @@ -23,9 +23,17 @@ class UserRepository extends ServiceEntityRepository */ public function findByRole(string $role): array { + $conn = $this->getEntityManager()->getConnection(); + $sql = 'SELECT id FROM "user" WHERE roles::text LIKE :role'; + $ids = $conn->executeQuery($sql, ['role' => '%"'.$role.'"%'])->fetchFirstColumn(); + + if ([] === $ids) { + return []; + } + return $this->createQueryBuilder('u') - ->where('u.roles LIKE :role') - ->setParameter('role', '%"'.$role.'"%') + ->where('u.id IN (:ids)') + ->setParameter('ids', $ids) ->getQuery() ->getResult() ;