Обновить коллекцию связанного объекта с помощью вновь созданного/удаленного объекта (onFlush).Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Обновить коллекцию связанного объекта с помощью вновь созданного/удаленного объекта (onFlush).

Сообщение Anonymous »

У меня есть следующая настройка объектов Doctrine:

Код: Выделить всё

class MainEntity
{
/**
* @var SecondEntity[]
*
* @ORM\OneToMany(targetEntity="SecondEntity", mappedBy="mainEntity", cascade={"persist"})
*/
private $secondEntities;

/**
* @var integer
*
* @ORM\Column(type="integer", nullable=false, name="second_entities_count")
*/
private $secondEntitiesCount;

...
}

class SecondEntity
{
/**
* @var MainEntity
*
* @ORM\ManyToOne(targetEntity="MainEntity", inversedBy="secondEntities")
* @ORM\JoinColumn(name="main_entity_id", referencedColumnName="id", nullable=false)
*/
private $mainEntity;

...
}
Когда SecondEntity создается или удаляется, я хочу, чтобы $ SecondEntitiesCount в связанном MainEntity обновлялся соответствующим образом.< /p>

Для этого я создал подписчика onFlush, который собирает все запланированные удаления и вставки объектов SecondEntity

Код: Выделить всё

$delsertions = array_merge(
$unitOfWork->getScheduledEntityInsertions(),
$unitOfWork->getScheduledEntityDeletions()
);
foreach ($delsertions as $entity) {
if ($entity instanceof SecondEntity) {
$mainEntity = $entity->getMainEntity();

$mainEntityMeta = $em->getClassMetadata(MainEntity::class);
$unitOfWork->recomputeSingleEntityChangeSet($mainEntityMeta, $mainEntity);

dump($mainEntity->getSecondEntities); // The creation/deletion of the current entity is not reflected here!
}
}
Проблема в том, что в dump() выше коллекция не была соответствующим образом обновлена ​​после создания/удаления объекта, вызвавшего срабатывание подписчика. Например, если я создаю первый SecondEntity для данного MainEntity, коллекция $ SecondEntities будет пустой.
И если я удалю единственный SecondEntity< /code>, коллекция $ SecondEntities по-прежнему будет содержать этот объект внутри.
Вызов recomputeSingleEntityChangeSet(), похоже, в этом случае ничего не делает.

Как заставить коллекцию правильно обновляться?

Подробнее здесь: https://stackoverflow.com/questions/382 ... object-onf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»