From a2f518ee15fe7bf6882b158e1619b8f42c1ab8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P?= Date: Mon, 4 Nov 2024 22:08:44 +0100 Subject: [PATCH] Test relations for bibliography --- src/Controller/BibliographyController.php | 6 ++++++ src/Controller/CollectionController.php | 3 ++- src/Entity/Collection.php | 5 ++--- src/Repository/BibliographyRepository.php | 2 +- src/Repository/CollectionRepository.php | 24 +++++++++++++++++++++-- 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/Controller/BibliographyController.php b/src/Controller/BibliographyController.php index d1308ee..ecae04f 100644 --- a/src/Controller/BibliographyController.php +++ b/src/Controller/BibliographyController.php @@ -3,6 +3,7 @@ namespace App\Controller; use App\Entity\Bibliography; +use App\Entity\Collection; use App\Form\BibliographyType; //use App\Security\Voter\VocabVoter; use Doctrine\ORM\EntityManagerInterface; @@ -17,6 +18,11 @@ class BibliographyController extends AbstractController #[Route('/bibliography/{id<\d+>}', name: 'app_bibliography')] public function index(Bibliography $bibliography, EntityManagerInterface $em): Response { + $repo = $em->getRepository(Collection::class); + $collections = $repo->findAllByBibliography($bibliography->getId()); + + $bibliography->setCollections($collections); + return $this->render('bibliography/index.html.twig', [ 'controller_name' => 'BibliographyController', 'record' => $bibliography, diff --git a/src/Controller/CollectionController.php b/src/Controller/CollectionController.php index 9968433..bed7eb9 100644 --- a/src/Controller/CollectionController.php +++ b/src/Controller/CollectionController.php @@ -14,7 +14,8 @@ class CollectionController extends AbstractController #[Route('/collection/{id<\d+>}', name: 'app_collection')] public function index(Collection $collection, EntityManagerInterface $em): Response { - $bibliographies = $em->getRepository(Bibliography::class)->findAllCollection($collection->getId()); + $repo = $em->getRepository(Bibliography::class); + $bibliographies = $repo->findAllByCollection($collection->getId()); $collection->setBibliographies($bibliographies); diff --git a/src/Entity/Collection.php b/src/Entity/Collection.php index 05d7e27..f0c9be6 100644 --- a/src/Entity/Collection.php +++ b/src/Entity/Collection.php @@ -2,15 +2,14 @@ namespace App\Entity; -//use App\Repository\UserRepository; - +use App\Repository\CollectionRepository; use DateTimeImmutable; use Doctrine\ORM\Mapping as ORM; use Doctrine\DBAL\Types\Types; use App\RecordStatus; use Doctrine\Common\Collections\Collection as DoctrineCollection; -#[ORM\Entity()] +#[ORM\Entity(repositoryClass: CollectionRepository::class)] #[ORM\Table(name: 'collection')] class Collection { diff --git a/src/Repository/BibliographyRepository.php b/src/Repository/BibliographyRepository.php index b4db3d9..efe58cb 100644 --- a/src/Repository/BibliographyRepository.php +++ b/src/Repository/BibliographyRepository.php @@ -18,7 +18,7 @@ class BibliographyRepository extends ServiceEntityRepository parent::__construct($registry, Bibliography::class); } - public function findAllCollection(int $collectionId): ?ArrayCollection + public function findAllByCollection(int $collectionId): ?ArrayCollection { $rsm = new ResultSetMappingBuilder($this->getEntityManager()); $rsm->addRootEntityFromClassMetadata('App\Entity\Bibliography', 'b'); diff --git a/src/Repository/CollectionRepository.php b/src/Repository/CollectionRepository.php index 73bdd51..34cf587 100644 --- a/src/Repository/CollectionRepository.php +++ b/src/Repository/CollectionRepository.php @@ -3,9 +3,10 @@ namespace App\Repository; use App\Entity\Collection; -use App\Repository\BibliographyRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\ORM\Query\ResultSetMappingBuilder; /** * @extends ServiceEntityRepository @@ -16,5 +17,24 @@ class CollectionRepository extends ServiceEntityRepository { parent::__construct($registry, Collection::class); } -} + public function findAllByBibliography(int $biblioId): ?ArrayCollection + { + $rsm = new ResultSetMappingBuilder($this->getEntityManager()); + $rsm->addRootEntityFromClassMetadata('App\Entity\Collection', 'c'); + + $query = $this->getEntityManager()->createNativeQuery( + "SELECT id, stato, editor, tit_coll, data_coll + FROM collection c + JOIN rel_riferimento_collezione + ON Collezione_id_coll = id + WHERE Bibliografia_id_bib = :biblioId", + $rsm + ); + $query->setParameter('biblioId', $biblioId); + + $collections = new ArrayCollection($query->getResult()); + + return $collections; + } +}