2016-03-19 12 views
0

Ich erkannte meinen Fehler, aber ich weiß nicht, wie man es löst. Ich habe zwei Tabelle, Auto und Werbung, ich möchte eine verschachtelte Form durchgeführt, um Daten in Tabellen hinzuzufügen. Aber ich habe eine Fehlermeldung, die besagt:Symfony Integrität Einschränkung Verletzung: 1062 doppelten Eintrag '1' für Schlüssel

Eine Ausnahme während aufgetreten

Ausführung
INSERT INTO car (year, model, engine_size, colour, mileage, advertisement_id, fuel_id, transmission_id, body_id, make_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 

mit params ["2012", "a3", "v8", "45", 4, 26, 1, 1, 1, 1].

Ausnahme:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'UNIQ_773DE69D78D28519' 

Meine Frage ist: Warum meine Methode nicht die id meiner Einheit nicht abrufen es in der Entity-Werbung zu setzen?

Relation

/** 
* 
* @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; 
} 

Formular

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'; 
} 
} 

Regler

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; 
} 

Antwort

0

Eins-zu-Eins-Beziehung, und Sie haben eine Entität mit derselben ID in Ihrer Datenbank.