学说2:计算实体的相关实体,没有水合作用

时间:2015-06-03 11:40:49

标签: php doctrine-orm

我有这样的学说结构。

/**
 * @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()查询从实体外部执行此操作。但不幸的是,这个功能是巨大应用程序的一部分,更新所有对该功能的调用是一项巨大的工作。因此,我正在寻找在现有功能中解决问题的方法。

1 个答案:

答案 0 :(得分:1)

Doctrine 2的功能称为' Extra Lazy Associations'这解决了我的问题。

这正是我所需要的。对于计数,它不会对集合进行水合,而是执行count()查询。

Doctrine filters一起,它还允许无缝过滤关联的实体。