У меня есть отношение ManyToMany к объекту (Fair < -> Hotels) с более чем 12 000 записей. Когда я использую DoctrineModule \ Form \ Element \ ObjectMultiCheckbox в моей форме, у приложения заканчивается память. Кажется, что ObjectMultiCheckbox загружает каждый отдельный объект, который сохраняется в базе данных, даже если объект «Ярмарка» не назначен ни одному из отелей (и наоборот).Ошибка производительности с помощью Doctrine ORM Form Element ObjectMultiCheckbox с действительно большой коллекцией
Вот Красивый объект с отношением отеля:
/**
* @ORM\ManyToMany(targetEntity="Hotel", fetch="EXTRA_LAZY")
* @ORM\JoinTable(name="fair_core_has_hotel", joinColumns={@ORM\JoinColumn(name="fair_core_id", referencedColumnName="id")})
*/
private $hotel;
А вот ObjectMultiCheckbox в FairForm:
$this->add(array(
'name' => 'hotel',
'type' => 'DoctrineModule\Form\Element\ObjectMultiCheckbox',
'options' => array(
'entity' => 'hotel',
'unchecked_value' => '',
'object_manager' => $em,
'target_class' => 'Customer\Entity\Hotel',
'label_generator' => function($targetEntity) {
return "".$targetEntity->getLabel();
},
'attributes' => array('required' => false),
),
));
Уже пытался изменить выборки-режим EXTRA_LAZY, но это Безразлично Не имеет значения. Также отношение однонаправлено, отельная организация ничего не знает о ярмарке.
Есть ли решение? Или я сделал что-то не так?
Вот модули, я в настоящее время с помощью:
Сколько фотографий в отеле у вас есть? Являются ли ваши отношения между ярмаркой и гостиницей однонаправленными? Если нет, пожалуйста, покажите другую сторону. – Wilt
У меня есть около 12.000 записей о гостинице. Отношение однонаправлено. Прокси-сервер Doctrine (DoctrineModule \ Form \ Element \ Proxy) загружает каждую запись в метод loadObjects(), поэтому он сбой. Может быть, я могу попробовать его с определением собственного метода find_method в настройках. – Sepultura
Так исправьте меня, если я понимаю, что вы ошибаетесь, но вы хотите сделать список с несколькими выборами с 12 000 отелями на выбор? – Wilt