Рейтинг:0

Получить количество связанных сущностей

флаг ye

У меня есть две сущности, Публиковать и Категория

А Публиковать принадлежит Категория через 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
    */

    вернуть $количество;
  }
}
Kevin avatar
флаг in
https://www.drupal.org/docs/8/api/database-api/dynamic-queries/count-queries
berramou avatar
флаг gb
`$count = $query->count()->выполнить();`
Dylan avatar
флаг kr
Это тоже вариант - https://www.drupal.org/project/entity_usage

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.