Foundry предлагает разнообразные способы создания экземпляров сущностей. Что вызывает у меня проблемы, так это тот факт, что создание экземпляров объектов означает, что они будут сохраняться на ранних этапах (когда вызываются эти методы: new / createMany, createSequence / и т. д.).
Я знайте, что Foundry предлагает разнообразные способы подключения к процессу создания экземпляров. Но вопрос не в решении проблем с литейным обманом.
Во-первых, хочу узнать, является ли описанная ниже ассоциация индикатором плохого дизайна ORM? Если да, я его изменю, и Foundry заработает нормально, без ошибок — никаких хитростей не требуется.
У меня есть две сущности: Account и AccountSettings — они связаны через OneToOne (вопрос также относится к Ассоциации OneToMany).
Субъект Account.php:
Код: Выделить всё
#[ORM\OneToOne(mappedBy: 'account', targetEntity: AccountSettings::class, orphanRemoval: true)]
private $accountSettings;
Код: Выделить всё
#[ORM\OneToOne(inversedBy: 'accountSettings')]
#[ORM\JoinColumn(nullable: false)]
private ?Account $account = null;
Поэтому мне также необходимо создать AccountSettings для каждого объекта Account, созданного путем вызова AccountFactory::createMany(...).
Это, очевидно, не удается при использовании метода Foundry для создания этих созданий, который включает в себя сохранение объектов: потому что объект Account еще не сохранен, идентификатор базы данных отсутствует, поэтому я не могу создать объект AccountSettings на лету, вызвав AccountSettingsFactory::new().
Нет идентификатора базы данных для Учетная запись еще доступна, поэтому вызов приведет к исключению БД:
Код: Выделить всё
"Integrity constraint violation: 19 NOT NULL constraint failed: account_settings.account_id".Подробнее здесь: https://stackoverflow.com/questions/793 ... rk-reverse
Мобильная версия