Доброго дня
Разбираюсь с Symfony2, вроде всё норм, но одна закавыка ни как не хочет дальше пускать меня. Прошу помощи.
Есть Entity Offer, у которой должны быть OfferDescription на всех языках сайта. Вот их описания:
class Offer<br>
{<br>
/**<br>
* @var integer $id<br>
*<br>
* @ORM\Column(name="id", type="integer", nullable=false)<br>
* @ORM\Id<br>
* @ORM\GeneratedValue(strategy="IDENTITY")<br>
*/<br>
private $id;<br><br>
/**<br>
* @ORM\OneToMany(targetEntity="OfferDescr", mappedBy="offer", cascade={"all"}, orphanRemoval=true )<br>
*/<br>
protected $descriptions;<br><br>
public function __construct()<br>
{<br>
$this->descriptions = new ArrayCollection();<br>
}<br>
}<br><br>
class OfferDescr<br>
{<br>
/**<br>
* @var integer $id<br>
*<br>
* @ORM\Column(name="id", type="integer", nullable=false)<br>
* @ORM\Id<br>
* @ORM\GeneratedValue(strategy="IDENTITY")<br>
*/<br>
private $id;<br><br>
/**<br>
* @var text $h1<br>
*<br>
* @ORM\Column(name="h1", type="text", nullable=true)<br>
*/<br>
private $h1 = '';<br><br>
/**<br>
*<br>
* @ORM\ManyToOne(targetEntity="Offer", inversedBy="descriptions")<br>
* @ORM\JoinColumn(name="offer_id", referencedColumnName="id")<br>
*/<br>
protected $offer;<br>
}<br><br>
Форма редактирования создаётся таким образом:
class OfferDescrEditForm extends AbstractType<br>
{<br>
public function buildForm(FormBuilder $builder, array $options)<br>
{<br>
$builder->add('lng','hidden');<br>
$builder->add('h1');<br>
}<br>
}<br><br>
class OfferEditForm extends AbstractType<br>
{<br>
public function buildForm(FormBuilder $builder, array $options)<br>
{<br>
$builder->add('descriptions', 'collection', array('type' => new OfferDescrEditForm()));<br>
}<br>
}<br>
Twig шаблон для редактирования и добавления нового Offer`a один и тот же.
Метод получающий с неё данные:
if ( $id ) {<br>
// Update offer action<br>
$offer = $this->getOfferTotalInfoArr( $id );<br>
$this->_updOfferAction( $offer );<br>
}else{<br>
// Add new ofer action<br>
$offer = $this -> _initNewOffer();<br>
$this->_updOfferAction( $offer );<br>
}<br>
где,
private function _initNewOffer( ) {<br>
$langs = $this->getLanguages();<br>
$offer = new \PROJ\MainBundle\Entity\Offer();<br><br>
foreach ( $langs as $lng_key => $lng_info ) {<br>
$descr = new \PROJ\MainBundle\Entity\OfferDescr();<br>
$descr->setLng( $lng_key );<br>
$descr->setOffer( $offer );<br><br>
$offer->addOfferDescr( $descr );<br>
}<br>
return $offer;<br>
}<br>
И вот в итоге проблема, редактирование существующего Offer'a работает ОК, а при добавлении нового получаю ошибку:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'h1' cannot be null
в случае, если h1 для первого языка пусто, если в неё внести текст, то
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'h2' cannot be null
итак далее по пустым полям.
sudo php app/console cache:clear --env=dev
ничего не меняет.
Не пойму, в чём причина. Где-то висит требование notnull для поля, но вот где?
Заранее благодарен за помощь