qnixdev
@qnixdev
Junior PHP Developer

Как НЕ перезаписать коллекцию?

Доброго времени суток!

Есть две сущности Coupon & Country, со связью ManyToMany, смотреть можно в обе стороны.

Entity Coupon заполняется из формы:

$builder
    ->add('title')
    ->add('code')
    ->add('countries', EntityType::class, [
        'class' => Country::class,
        'query_builder' => function (EntityRepository $er) {
            return $er->createQueryBuilder('c')
                ->orderBy('c.name', 'ASC')
            ;
        },
        'label'        => 'Select country',
        'multiple'     => true,
        'required'     => false,
        'choice_label' => 'name',
        'choice_value' => 'id',
    ])
;


При создании все ок, создается сущности и дальше можно с нею работать.
Есть проблема при обновлении сущности, а именно идет перезапись коллекции Country в сущности Coupon новыми значениями, а если страны не переданы, то вовсе удаляет все значения.

Пробовал перед $this->em->flush(); попытаться достать сущность Coupon из репозитория что бы просто сохранить значения в отдельном массиве и потом записать их все разом в коллекцию Country (костыль в общем). Но на мое удивление, до метода флеш, сущность из БД "тянется" уже с обновленными значениями коллекции Country.

Как можно остановить обновление коллекции, что бы просто дозаписать новые значения?
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
@tukreb
Вот как нужно делать ManyToMany
https://gist.github.com/Ocramius/3121916
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы