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