From: Raphaƫl Gertz Date: Sat, 28 Aug 2021 04:55:26 +0000 (+0200) Subject: Add findByUserId function X-Git-Url: https://git.rapsys.eu/airbundle/commitdiff_plain/dff4af17d1220293d1e293d63d09b3c42e74320a Add findByUserId function --- 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(); + } +}