diff --git a/src/Controller/SiteController.php b/src/Controller/SiteController.php index a7e7a63..0e3ae55 100644 --- a/src/Controller/SiteController.php +++ b/src/Controller/SiteController.php @@ -5,6 +5,7 @@ namespace App\Controller; use App\Entity\Site; use App\Entity\Image; use App\Entity\Document; +use App\Entity\Bibliography; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -32,9 +33,12 @@ class SiteController extends AbstractController ); $repo = $em->getRepository(Document::class); $documents = $repo->findBySite($site->getId()); + $repo = $em->getRepository(Bibliography::class); + $bibliography = $repo->findAllBySite($site->getId()); $site->setImages($images); $site->setDocuments($documents); + $site->setBibliography($bibliography); $site->setLat((float) $coords['lat']); $site->setLng((float) $coords['lng']); diff --git a/src/Entity/Site.php b/src/Entity/Site.php index 726e037..559e1c0 100644 --- a/src/Entity/Site.php +++ b/src/Entity/Site.php @@ -86,8 +86,16 @@ class Site implements JsonSerializable private ?ArrayCollection $images; + /** + * @var Document[] $documents + */ private ?array $documents; + /** + * @var Bibliography[] $bibliography + */ + private ?array $bibliography; + public function getId(): ?int { return $this->id; @@ -398,6 +406,18 @@ class Site implements JsonSerializable return $this; } + public function getBibliography(): ?array + { + return $this->bibliography; + } + + public function setBibliography(array $bibliography): static + { + $this->bibliography = $bibliography; + + return $this; + } + public function jsonSerialize(): array { return [ @@ -424,6 +444,7 @@ class Site implements JsonSerializable 'ownedBy' => $this->ownedBy, 'images' => $this->images->toArray(), 'documents' => $this->documents, + 'bibliography' => $this->bibliography, 'techniques' => $this->techniques, 'author' => $this->author, ]; diff --git a/src/Repository/BibliographyRepository.php b/src/Repository/BibliographyRepository.php index f085bbb..9d75107 100644 --- a/src/Repository/BibliographyRepository.php +++ b/src/Repository/BibliographyRepository.php @@ -17,6 +17,31 @@ class BibliographyRepository extends ServiceEntityRepository parent::__construct($registry, Bibliography::class); } + /** + * @return Bibliography[] + */ + public function findAllBySite(int $siteId): array + { + $rsm = new ResultSetMappingBuilder($this->getEntityManager()); + $rsm->addRootEntityFromClassMetadata('App\Entity\Bibliography', 'b'); + $query = $this->getEntityManager()->createNativeQuery( + 'SELECT + id, + citazione, + riferimento, + pagine + FROM bibliografia b + JOIN bibliografia_sito + ON id_bibliografia = b.id + WHERE id_sito = :id + ORDER BY ordine ASC', + $rsm + ); + + $query->setParameter('id', $siteId); + + return $query->getResult(); + } /** * @return Bibliography[] */