我遇到問題,保存在實體表單字段中進行的選擇multiple = true。Symfony 2.0實體表單字段不保存
當$ form-> bindRequest($ request)被調用時,選擇會經過,但在調用flush時不會保留在數據庫中。
下面是相關的控制器代碼:
$news_item = new News();
$form = $this->createFormBuilder($news_item)
->add('products', 'entity',
array('class' => 'AcmeDemoBundle:Product',
'multiple' => TRUE))
->getForm();
$request = $this->getRequest();
if($request->getMethod() == "POST") {
$form->bindRequest($request);
if($form->isValid()) {
$this->em->persist($news_item);
$this->em->flush();
}
}
我能在時隔$形式 - >的isValid(檢查$ news_item對象)和計數($ news_item->的getProducts())返回正確數量的項目。 $ news_item本身保存在數據庫中,但ManyToMany關係不被保存。
下面是引用(裁剪爲簡潔起見)的實體:
/**
* @ORM\Entity
* @ORM\Table(name="Product")
*/
class Product {
/*
* @ORM\Id @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="News", inversedBy="products")
*/
protected $news_items = null;
public function __construct() {
$this->news_items = new ArrayCollection();
}
}
/**
* @ORM\Entity
* @ORM\Table(name="News")
*/
class News {
/**
* @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Product", mappedBy="news_items")
*/
protected $products = null;
public function __construct() {
$this->products = new ArrayCollection();
}
}