2010-01-03 5 views
3

J'utilise Doctrine pour l'abstraction de base de données. Maintenant, je voudrais obtenir la clé primaire auto_increment de l'objet fraîchement créé (et save() 'd) - mais $obj->toArray() me montre que le champ est vide après avoir appelé save().Valeur de doctrine load auto_increment après enregistrement

Y a-t-il un drapeau dont je ne suis pas au courant? Ou dois-je vraiment interroger l'objet de la base de données?

Répondre

3

Assurez-vous que l'indicateur AutoIncrement est défini lors de la configuration de votre objet dans la méthode setTableDefinition() (ou dans un fichier de configuration YAML associé). Si ce drapeau n'est pas défini, alors Doctrine ne saura pas le mettre à jour. Vous devriez avoir quelque chose qui ressemble à ceci:

$this->hasColumn('id', 'integer', 4, array(
        'type' => 'integer', 
        'length' => 4, 
        'fixed' => false, 
        'unsigned' => true, 
        'primary' => true, 
        'autoincrement' => true //this flag right here 
      ) 
); 
+0

Aaah oui c'était ça! J'ai accidentellement écrit auto_increment .. Je pense que la doctrine devrait avertir si un paramètre n'est pas valide :(Mais merci quand même! –

0

Appelez refresh sur l'instance d'enregistrement avant le toArray.

+0

Est-ce une caractéristique 2.x ou 1.2? Parce que je suis sur 1.1 et ça ne fait pas apparaître le champ clé primaire. (mais la méthode refresh() est là ..) –

+0

Peut-être que c'est seulement 1.2 - je pensais que c'était 1.x cependant. – prodigitalson

Questions connexes