Am două entități, Post
și Categorie
A Post
aparține unui Categorie
prin a entity_reference
numele tipului de câmp categorie_id
Vreau să obțin un număr de postări aparținând unei categorii (Pentru a preveni ștergerea unei categorii care are postări)
Solutia mea este aceasta:
clasa PostDP{
șir privat entityTypeId = 'entity_post';
private EntityTypeManagerInterface $em;
funcția publică __construct(EntityTypeManagerInterface $em)
{
$aceasta->em = $em;
}
funcția publică getByCategoryId(int $categoryId): matrice
{
$interogare = $this->em->getStorage($this->entityTypeId)->getQuery();
$query->condition('category_id', $categoryId, '=');
$rezultat = $interogare->execute();
$posts = $this->em->getStorage($this->entityTypeId)->loadMultiple($result);
returnează $postări;
}
}
Nu există o altă modalitate de a obține doar numărul fără a încărca toate postările?
De fapt, vreau să încep de la Categorie
entitate, Și doar verificați numărul de postări legate de o anumită categorie.
Ca în acest exemplu (incomplet):
clasa CategoryDP{
șir privat entityTypeId = 'entity_category';
private EntityTypeManagerInterface $em;
funcția publică __construct(EntityTypeManagerInterface $em)
{
$aceasta->em = $em;
}
funcția publică getCountPosts(int $categoryId): matrice
{
$interogare = $this->em->getStorage($this->entityTypeId)->getQuery();
/**
*@todo Obțineți numărul de postări
* Construiți o interogare care execută SQL:
*
* SELECTAȚI
* numara(*)
* DIN
* categoria c LEFT JOIN post p
* PE
* p.category_id = c.id
* UNDE
* c.id = :categoryId
*/
returnează $count;
}
}