ฉันมีสองหน่วยงาน โพสต์
และ หมวดหมู่
ก โพสต์
เป็นของ หมวดหมู่
ผ่านทาง ก เอนทิตี_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;
}
}