Задать вопрос
@wwspb

Как правильно работать с PersistentCollection в Doctrine ORM?

Есть две сущности A и B, отношение многие к одному.
Я создаю сущность А, добавляю в неё несколько сущностей B. Теперь A содержит объект класса PersistentCollection, но он пустой, пока я не выполню flush(). Это нормально, что я на данном этапе не могу работать полноценно со связью между сущностями пока не положу их в базу?

Всё выглядит примерно так:

$entityA = $entity_manager->getRepository(...)->find(1);
foreach (...) {
    $entityB = new EntityB();
    $entityB->setEntityA($entityA);

    $entityA->addEntitiesB($entityB);

    $entity_manager->persist($entityB);
}

// теперь если здесь не выполнить $entity_manager->flush()
// то $entitiesB будет содержать пустой объект PersistentCollection
$entitiesB = $entityA->getEntitiesB();
  • Вопрос задан
  • 1718 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Скорее всего, это происходит, если вы во втором случае берёте $entityA->getEntitiesB(); у другого объекта, полученного из репозитория.
$entityA1 = $entity_manager->getRepository(...)->find(1);
$entityA1->addEntitiesB(new EntityB());

$entityA2 = $entity_manager->getRepository(...)->find(1); // получаем новый объект (из базы)
$entitiesB = $entityA2->getEntitiesB(); // пусто
$entitiesB = $entityA1->getEntitiesB(); // а тут будет сохранённый объект
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы