Erzeugen Sie Primärschlüssel in Symfony2 und MySQL
-
25-10-2019 - |
Frage
Wie generiere ich automatisch einen Primärschlüssel in Symfony2/Doctrine2?
Ich habe alle meine Entitäten und Datenbank.
In meinem Symfony2 Controller tue ich:
<?php
/**
* @Route("/myroute", name="myroute")
* @Template()
*/
public function myrouteAction()
{
/* Page de Création d'un retrait ou d'une réexpédition. */
$obj = new Utilisateur();
$obj->setUsermail('contact@mydomain.com');
$obj->setUserpass('coucou');
$obj->setUservalide('1');
$em = $this->getDoctrine()->getEntityManager();
$em->persist($obj);
$em->flush();
// [...]
}
Es ist zum Testen. Das erste Mal ging alles nach rechts (Utilisateur -Tisch war leer). Wenn ich diese Funktion wieder aufrufe, bekomme ich:
SQLState [23000]: Verstoß gegen Integritätsbeschränkung: 1062 Duplikateintrag '0' für Schlüssel 'Primär' 500 Interner Serverfehler - PDOException
Ich möchte nur, dass Symfony-doctrin-mysql die Kennung automatisch erhöht.
Lösung
Hoffentlich hilft dies: Unter der Annahme, dass Sie Anmerkungen und Doktrin verwenden, müssen Sie die Strategie auf Ihr Objekt einstellen - aus der Dokumentation (Dokumentationhttp://symfony.com/doc/current/book/doctrine.html)
/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
--> * @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
Denken Sie daran, Ihr Datenbankschema zu aktualisieren, nachdem Sie das Objekt geändert haben.