Ich benutze Symfony2 mit Doctrine und ich benutze das Alice Fixture Bundle, um meine Fixtures zum Testen zu generieren.Kann ich die automatische Inkrement-ID mit Alice Fixtures überschreiben?
In einem Fall muss ich ein Fixture erstellen, wo die ID 148 für einen bestimmten Test ist. Alle unsere IDs sind auf auto_increment konfiguriert, daher erstelle ich derzeit 147 Dummy-Datensätze, um genau die zu erstellen, die ich brauche.
Ich hatte gehofft, diese Definition zu verwenden, um die ID zu zwingen, auf 148 zu setzen:
invoiceClassNoClass (extends invoiceClass):
id: 148
sortOrder: 1
label: 'No Class'
Leider funktioniert das nicht. Von einer Google-Suche las ich einen kurzen Kommentar, der besagt, dass ich zuerst eine setId-Methode zu meiner Entität hinzufügen muss. Ich habe es versucht, aber es hat keinen Unterschied gemacht. In Wirklichkeit möchte ich nicht als setId-Methode hinzufügen, wenn ich es nicht brauche, da es gegen unsere Integritätsregeln verstößt, bei denen wir niemals die Einstellung einer ID erlauben.
Vielleicht gibt es eine Reflexionsklasse, die verwendet werden könnte? Vielleicht ist das in Alice eingebaut und ich weiß es nicht?
* Ich muss zuerst eine setId Methode zu meiner Einheit hinzuzufügen. Ich habe es versucht, aber es hat keinen Unterschied gemacht. * Bitte erläutern Sie es genauer, haben Sie einen Fehler bekommen? Das Hinzufügen von 'setId' ist wahrscheinlich die beste und einfachste Lösung für Ihr Problem. –
Der ID-Generatortyp überschreibt eine Einstellung, die Sie mit setId festgelegt haben, daher reicht es nicht aus, nur das Objekt zu setzen. – David
@ David Sind Sie sicher? IIRC, automatische Inkrementierung wird nur verwendet, wenn die primäre ID null ist. –