У меня есть структура доктрины, как это.Доктрина 2: Связать объекты сущности без гидратации
/**
* @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();
}
Она работает нормально, за исключением использования памяти и производительности. Увлажнение всей коллекции занимает много памяти и времени. У меня сто тысяч transcodeProfiles
, и число растет.
Есть ли способ получить количество записей без увлажнения коллекции?
PS: Я знаю, что могу сделать это извне сущности, запустив запрос count()
с $em
. Но, к сожалению, эта функциональность является частью огромного приложения, и обновление всех вызовов функции - огромная работа. Поэтому я ищу способ решить проблему в рамках существующей функциональности.