0
私は自分のエラーを認識しましたが、解決方法はわかりません。 私は2つのテーブルCar and Advertisementを持っています。テーブルにデータを追加するためにネストされたフォームを実行したがっています。しかし、私はエラーメッセージ、言うている:のparams ["2012", "a3", "v8", "45", 4, 26, 1, 1, 1, 1]
でsymfonyの整合性制約違反:1062重複するエントリ '1'のキー
INSERT INTO car (year, model, engine_size, colour, mileage, advertisement_id, fuel_id, transmission_id, body_id, make_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
を実行しながら
例外が発生しました。
例外:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'UNIQ_773DE69D78D28519'
私の質問は:私のメソッドは、エンティティの広告でそれを置くために私のエンティティのIDを取得していないのはなぜ?
関係
/**
*
* @ORM\OneToOne(targetEntity="Home\HomeBundle\Entity\Advertisement", cascade={"persist","remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $Advertisement;
public function setAdvertisement(\Home\HomeBundle\Entity\Advertisement $advertisement)
{
$this->Advertisement = $advertisement;
return $this;
}
フォーム
class CarType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('year')
->add('model')
->add('engineSize')
->add('colour')
->add('mileage')
->add('Advertisement', new AdvertisementType())
->add('Fuel')
->add('Transmission')
->add('Body')
->add('Make')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Home\HomeBundle\Entity\Car'
));
}
/**
* @return string
*/
public function getName()
{
return 'home_homebundle_car';
}
}
コントローラ
public function createAction(Request $request)
{
$entity = new Car();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('car_show', array('id' => $entity->getId())));
}
return $this->render('HomeBundle:Car:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
/**
* Creates a form to create a Car entity.
*
* @param Car $entity The entity
*
* @return \Symfony\Component\Form\Form The form
*/
private function createCreateForm(Car $entity)
{
$form = $this->createForm(new CarType(), $entity, array(
'action' => $this->generateUrl('car_create'),
'method' => 'POST',
));
$form->add('submit', 'submit', array('label' => 'Create'));
return $form;
}