2016-03-19 22 views
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; 
} 

答えて

0

1対1の関係で、データベースに同じIDを持つエンティティがあります。

関連する問題