ฉันมีสองหน่วยงาน โพสต์ และ หมวดหมู่
ก โพสต์ เป็นของ หมวดหมู่ ผ่านทาง ก เอนทิตี_reference ชื่อประเภทฟิลด์ หมวดหมู่_รหัส
ฉันต้องการนับจำนวนโพสต์ที่อยู่ในหมวดหมู่ (เพื่อป้องกันการลบหมวดหมู่ที่มีโพสต์)
วิธีแก้ปัญหาของฉันคือ:
คลาส PostDP{
  สตริงส่วนตัว entityTypeId = 'entity_post';
  EntityTypeManagerInterface ส่วนตัว $em;
  ฟังก์ชั่นสาธารณะ __construct (EntityTypeManagerInterface $em)
  {
    $this->em = $em;
  }
  ฟังก์ชันสาธารณะ getByCategoryId(int $categoryId): อาร์เรย์
  {
    $query = $this->em->getStorage($this->entityTypeId)->getQuery();
    $query->condition('category_id', $categoryId, '=');
    $result = $query->execute();
    $posts = $this->em->getStorage($this->entityTypeId)->loadMultiple($result);
    ส่งคืน $posts;
  }
}
มีวิธีอื่นในการนับโดยไม่ต้องโหลดโพสต์ทั้งหมดหรือไม่
จริงๆ แล้วผมอยากเริ่มจาก หมวดหมู่ เอนทิตี และเพียงแค่ตรวจสอบจำนวนโพสต์ที่เกี่ยวข้องกับหมวดหมู่ที่กำหนด
เช่นในตัวอย่าง (ไม่สมบูรณ์):
คลาส CategoryDP{
  สตริงส่วนตัว 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 = :categoryId
    */
    ส่งคืน $count;
  }
}