From 1d2f3611d73e15020a71b0e65c8e2daf9750b05c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rapha=C3=ABl=20Gertz?= Date: Sat, 28 Aug 2021 06:55:26 +0200 Subject: [PATCH 1/1] Add findByUserId function --- Repository/DanceRepository.php | 57 ++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Repository/DanceRepository.php diff --git a/Repository/DanceRepository.php b/Repository/DanceRepository.php new file mode 100644 index 0000000..8296ccd --- /dev/null +++ b/Repository/DanceRepository.php @@ -0,0 +1,57 @@ +getEntityManager(); + + //Get quote strategy + $qs = $em->getConfiguration()->getQuoteStrategy(); + $dp = $em->getConnection()->getDatabasePlatform(); + + //Get quoted table names + //XXX: this allow to make this code table name independent + $tables = [ + 'RapsysAirBundle:UserDance' => $qs->getJoinTableName($em->getClassMetadata('RapsysAirBundle:User')->getAssociationMapping('dances'), $em->getClassMetadata('RapsysAirBundle:User'), $dp), + 'RapsysAirBundle:Dance' => $qs->getTableName($em->getClassMetadata('RapsysAirBundle:Dance'), $dp) + ]; + + //Set the request + $req = 'SELECT d.id, d.title +FROM RapsysAirBundle:UserDance AS ud +JOIN RapsysAirBundle:Dance AS d ON (d.id = ud.dance_id) +WHERE ud.user_id = :uid'; + + //Replace bundle entity name by table name + $req = str_replace(array_keys($tables), array_values($tables), $req); + + //Get result set mapping instance + //XXX: DEBUG: see ../blog.orig/src/Rapsys/BlogBundle/Repository/ArticleRepository.php + $rsm = new ResultSetMapping(); + + //Declare result set for our request + $rsm->addEntityResult('RapsysAirBundle:Dance', 'd'); + $rsm->addFieldResult('d', 'id', 'id'); + $rsm->addFieldResult('d', 'title', 'title'); + + //Send result + return $em + ->createNativeQuery($req, $rsm) + ->setParameter('uid', $userId) + ->getResult(); + } +} -- 2.41.1