如何在doctrine/php中聚合实体属性中不同表中的信息?
我将PHPSymfony5.2与orm结合使用。我有以下实体:如何在doctrine/php中聚合实体属性中不同表中的信息?,php,doctrine-orm,doctrine,Php,Doctrine Orm,Doctrine,我将PHPSymfony5.2与orm结合使用。我有以下实体: Question -------- id questionText Answer ------ id answerText questionId GivenAnswer ----------- id answerId 用户进入我的网站,可以回答问题。每个问题有两到四个答案。发送答案时,答案会保存在表GivenAnswer中,在表中,每个答案都会创建一个带有答案ID的新行 现在我想在PHP中的应答实体中有一个额外的字段,我称之为
Question
--------
id
questionText
Answer
------
id
answerText
questionId
GivenAnswer
-----------
id
answerId
用户进入我的网站,可以回答问题。每个问题有两到四个答案。发送答案时,答案会保存在表GivenAnswer中,在表中,每个答案都会创建一个带有答案ID的新行
现在我想在PHP中的应答实体中有一个额外的字段,我称之为givenTotal。在这里,我想访问给定答案的数量,如下所示:
echo "Answer given " . $answer->givenTotal() . " times";
我知道如何使用SQL请求这些信息,但我不想使用answer对象循环所有问题,以将这些信息加载到属性中。是否有一种编码方法,使得条令orm将givenaswer计数加载到此属性中?条令有一个称为的功能。在额外的惰性关联上,
count()
发出计数查询,并且不会完全加载所有关联的实体
只需将该标志添加到从Answer
到GivenAnswer
的关系中:
/**
* @Entity
*/
Class Answer
{
/**
* @ManyToMany(targetEntity="GivenAnswer", mappedBy="answer", fetch="EXTRA_LAZY")
*/
public $givenAnswers;
public function getGivenAnswers() :ArrayCollection
{
return $this->givenAnswers;
}
}
然后使用$answer->getGivenAnswers()->count()