Use manual hydration for many-to-many to avoid problems with caching
This commit is contained in:
@@ -22,25 +22,35 @@ class BibliographyRepository extends ServiceEntityRepository
|
||||
*/
|
||||
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
|
||||
$conn = $this->getEntityManager()->getConnection();
|
||||
|
||||
$sql = '
|
||||
SELECT
|
||||
b.id,
|
||||
b.citazione,
|
||||
b.riferimento,
|
||||
bs.pagine
|
||||
FROM bibliografia b
|
||||
JOIN bibliografia_sito
|
||||
ON id_bibliografia = b.id
|
||||
WHERE id_sito = :id
|
||||
ORDER BY ordine ASC',
|
||||
$rsm
|
||||
);
|
||||
INNER JOIN bibliografia_sito bs ON bs.id_bibliografia = b.id
|
||||
WHERE bs.id_sito = :siteId
|
||||
ORDER BY bs.ordine ASC
|
||||
';
|
||||
|
||||
$query->setParameter('id', $siteId);
|
||||
$stmt = $conn->prepare($sql);
|
||||
$results = $stmt->executeQuery(['siteId' => $siteId])->fetchAllAssociative();
|
||||
|
||||
return $query->getResult();
|
||||
$entities = [];
|
||||
|
||||
foreach ($results as $row) {
|
||||
$biblio = new Bibliography();
|
||||
$biblio->setId($row['id']);
|
||||
$biblio->setCitation($row['citazione']);
|
||||
$biblio->setReference($row['riferimento']);
|
||||
$biblio->setPages($row['pagine']);
|
||||
$entities[] = $biblio;
|
||||
}
|
||||
|
||||
return $entities;
|
||||
}
|
||||
/**
|
||||
* @return Bibliography[]
|
||||
|
||||
Reference in New Issue
Block a user