我有这样的学说结构。
/**
* @ORM\Entity
* @ORM\Table(name="entity_deviceProfile")
*/
class DeviceProfile
{
/**
* @ORM\ManyToMany(targetEntity="TranscodeProfile", inversedBy="deviceProfiles")
* @ORM\JoinTable(name="entity_deviceProfile_rel_transcodeProfiles_transcodeProfile")
* @var \Doctrine\Common\Collections\Collection
*/
protected $transcodeProfiles = null;
}
我想在getTranscodeProfileCount()
类中使用方法DeviceProfile
。
所以我将以下函数添加到DeviceProfile
:
public function getTranscodeProfilesCount() {
if (!$this->transcodeProfiles->isInitialized()) {
$this->transcodeProfiles->initialize();
}
return $this->transcodeProfiles->count();
}
除了内存使用和性能之外,它的工作正常。保湿整个系列需要大量的记忆和时间。我有成千上万的{{1}},这个数字正在增长。
有没有办法在没有保湿系列的情况下获取记录数?
PS:我知道我可以通过transcodeProfiles
运行count()
查询从实体外部执行此操作。但不幸的是,这个功能是巨大应用程序的一部分,更新所有对该功能的调用是一项巨大的工作。因此,我正在寻找在现有功能中解决问题的方法。
答案 0 :(得分:1)
Doctrine 2的功能称为' Extra Lazy Associations'这解决了我的问题。
这正是我所需要的。对于计数,它不会对集合进行水合,而是执行count()
查询。
与Doctrine filters一起,它还允许无缝过滤关联的实体。