I want to add to Model entity one choice from Marka entity. I've problem with data from choices form. Form has got all data inside, but when I send the form i get error:
An exception occurred while executing 'INSERT INTO model (nazwa, idm) VALUES (?, ?)' with params ["a", null]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'idm' cannot be null
When i check source code I see that value is correctly:
<select id="namefield_idm" name="namefield[idm]" class="form-control">
<option value="1" >Opel</option>
<option value="2" >Mazda</option>
<option value="3" >Ford</option>
</select>
I don't have any idea whats wrong. My ModelType.php
<?php
namespace UTPBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Doctrine\ORM\EntityRepository;
class ModelType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nazwa', 'text', array('label' => 'Nazwa', 'attr' => array(
'class' => 'form-control')
))
->add('idm', 'entity', array(
'label' => 'Marka',
'mapped' => false,
'class' => 'UTPBundle:Marka',
'choice_label' => 'nazwa',
'attr' => array(
'class' => 'form-control'
),
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u');
},
))
->add('save', 'submit', array('label' => 'Dodaj', 'attr' => array(
'class' => 'btn btn-success'
)));
}
public function configureOptions(OptionsResolver $resolver)
{
}
public function getName()
{
return 'namefield';
}
}
?>
My code from controller looks like:
/**
* @Route("/model", name="utp_model")
*/
public function modelAction(Request $request)
{
$name = 'Model';
$model = new Model();
$marka = new Marka();
$form = $this->createForm(new ModelType($marka), $model);
$form->handleRequest($request);
if ($form->isValid() && $form->isSubmitted()) {
$em = $this->getDoctrine()->getManager();
$em->persist($model);
$em->flush();
}
return $this->render('UTPBundle:Default:model.html.twig', array(
'name' => $name,
'form' => $form->createView()
));
}
And model entity also:
<?php
namespace UTPBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Model
*
* @ORM\Table()
* @ORM\Entity
*/
class Model
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nazwa", type="string", length=255)
*/
private $nazwa;
/**
* @var integer
*
* @ORM\Column(name="idm", type="integer")
*/
private $idm;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set idm
*
* @param integer $idm
*
* @return Model
*/
public function setIdm($idm)
{
$this->idm = $idm;
return $this;
}
/**
* Get idm
*
* @return string
*/
public function getIdm()
{
return $this->idm;
}
/**
* Set nazwa
*
* @param string $nazwa
*
* @return Model
*/
public function setNazwa($nazwa)
{
$this->nazwa = $nazwa;
return $this;
}
/**
* Get nazwa
*
* @return string
*/
public function getNazwa()
{
return $this->nazwa;
}
}