Каскадный упор не работает (Doctrine ORM + Symfony 2)

Несколько месяцев назад я начал работать с symfony, и меня постоянно беспокоит одно. Это когда у меня есть отношения «один ко многим» в «Доктрине», и я пытаюсь вставить что-то в базу данных. Вот пример:

Broker.orm.yml

Acme\DemoBundle\Entity\Broker: type: entity table: brokers repositoryClass: BrokerRepository id: id: type: integer generator: { strategy: AUTO } fields: name: type: string length: 255 slug: type: string length: 64 oneToMany: accountTypes: targetEntity: Acme\DemoBundle\Entity\AccountType mappedBy: broker cascade: ["persist"] 

AccountType.orm.yml

 Acme\DemoBundle\Entity\AccountType: type: entity table: account_types repositoryClass: AccountTypeRepository id: id: type: integer generator: { strategy: AUTO } fields: name: type: string length: 255 slug: type: string length: 64 manyToOne: broker: targetEntity: Acme\DemoBundle\Entity\Broker inversedBy: accountTypes joinColumn: name: broker_id referencedColumn: id 

Затем попытайтесь сохранить его в базе данных, как это.

 $accountType = new AccountType(); $accountType->setName("blabla"); // additional data to accountType $broker->addAccountType($accountType); $em->persist($broker); $em->flush(); 

Странно то, что он работает правильно с одной крошечной проблемой. Брокер обновляется, а AccountType добавляется в базу данных, но у accountType нет никаких отношений с Брокером. Другими словами, когда я проверяю базу данных, поля broker_id выглядят нетронутыми и содержат NULL .

Если я добавлю $accountType->setBroker($broker) вручную, он будет работать. Но я начал использовать Sonata Admin Bundle, где гораздо сложнее это сделать, и мне не нужна сложная система администрирования. Поэтому я просто хочу быстро развиваться, и без этой «функции» это почти невозможно.

И в любом случае, если я добавлю что-то в коллекцию объекта, он должен знать, какой объект является его родителем, не так ли? 🙂

Заранее спасибо за помощь!

Related of "Каскадный упор не работает (Doctrine ORM + Symfony 2)"

 class Broker { public function addAccountType($accountType) { $this->accountTypes[] = $accountType; // *** This is what you are missing *** $accountType->setBroker($this);