У меня есть две сущности, Публиковать
и Категория
А Публиковать
принадлежит Категория
через entity_reference
имя типа поля ид_категории
Я хочу получить количество сообщений, принадлежащих категории (чтобы предотвратить удаление категории, в которой есть сообщения)
Мое решение таково:
класс PostDP {
приватная строка entityTypeId = 'entity_post';
частный EntityTypeManagerInterface $em;
публичная функция __construct(EntityTypeManagerInterface $em)
{
$this->em = $em;
}
публичная функция getByCategoryId(int $categoryId): массив
{
$query = $this->em->getStorage($this->entityTypeId)->getQuery();
$query->условие('category_id', $categoryId, '=');
$результат = $запрос->выполнить();
$posts = $this->em->getStorage($this->entityTypeId)->loadMultiple($result);
возврат $сообщений;
}
}
Нет ли другого способа просто подсчитать, не загружая все сообщения?
Собственно, я хочу начать с Категория
сущность, И просто проверьте количество связанных сообщений в определенной категории.
Как в этом (неполном) примере:
класс КатегорияDP{
приватная строка entityTypeId = 'entity_category';
частный EntityTypeManagerInterface $em;
публичная функция __construct(EntityTypeManagerInterface $em)
{
$this->em = $em;
}
публичная функция getCountPosts(int $categoryId): массив
{
$query = $this->em->getStorage($this->entityTypeId)->getQuery();
/**
*@todo Получить количество сообщений
* Создайте запрос, который выполняет SQL:
*
* ВЫБРАТЬ
* считать(*)
* ОТ
* категория c сообщение LEFT JOIN p
* НА
* p.category_id = c.id
* КУДА
* c.id = :categoryId
*/
вернуть $количество;
}
}