У меня возникли проблемы с сохранением выделений, сделанных в поле формы объекта, с кратным = true.
Выборки выполняются при вызове $ 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();
}
}
Я проверил объект $ news_item после того, как $ form-> isValid () и счетчик ($ 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();
}
}