Generazione di chiavi primarie in Symfony2 e mysql
-
25-10-2019 - |
Domanda
Come per generare automaticamente una chiave primaria in Symfony2 / Doctrine2?
ho tutti i miei entità e database di fatto.
Nel mio controller di Symfony2, lo faccio:
<?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();
// [...]
}
E 'per il test. La prima volta che tutto è andato a destra (Utilisateur tavolo era vuoto). Ora, quando chiamo di nuovo questa funzione, ottengo:
SQLSTATE [23000]: Integrità violazione del vincolo: 1.062 voce duplicata '0' per la chiave 'primaria' Errore 500 Internal Server - PDOException
Voglio solo Symfony-dottrina-Mysql automaticamente incrementare l'identificatore.
Soluzione
Speriamo che questo aiuta: supponendo che si sta utilizzando le annotazioni e ORM Doctrine, è necessario impostare la strategia per l'auto sul vostro oggetto - dalla documentazione ( http://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;
ricordarsi di aggiornare lo schema del database dopo aver modificato l'oggetto.