0
我想embed a collection of forms,但我遇到了麻烦持久新创建的对象。级联一个协会
A Customer
有许多Email
s。在我的控制器,
// CustomersController.php
$customer = new Customer();
$customer->setCreatedBy(0);
$blankEmail = new Email();
$customer->addEmail($blankEmail);
$form = $this->createForm(new CustomerType(), $customer);
我记得级联选项在我Customer
类设置:
// Customer.php
...
/**
* @ORM\OneToMany(targetEntity="Email", mappedBy="customer", cascade={"persist"})
*/
protected $emails;
我Email
类也有所需的信息:
// Email.php
...
/**
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="emails", cascade={"persist"})
* @ORM\JoinColumn(name="customers_id", referencedColumnName="id")
*/
protected $customer;
出于某种原因,这是行不通的:
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($customer);
$em->flush();
它增加了客户的权利,但是当它试图添加电子邮件时,它表示没有设置customerId。所以,我想这一点,和它的作品:
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
foreach ($customer->getEmails() as $email)
$email->setCustomer($customer);
$em->persist($email);
}
$em->persist($customer);
$em->flush();
但是我真的希望能够得到它一举,只是坚持的$customer
对象(因为我知道它可以)。
哪'strategy'你在'@ GeneratedValue'注解集? – 2013-03-19 12:07:03
“客户”和“电子邮件”都使用“自动”作为其ID。你是这个意思吗? – 2013-03-19 13:02:49