Unique-Einschränkung - Symfony2 und Doctrine2
Konnte ich nicht finden die Dokumentation, die mit diesem in einer Weise geschrieben, ich kann es verstehen, daher bitte ich Euch um Hilfe. Diese Frage ist im Zusammenhang zu Einzigartige Einrichtung - Symfony2
Ich habe eine Tabelle namens Kategorie mit drei-Felder - id, fos_user_id und Namen.
Die andere Tabelle heißt fos_user und hat die Felder id, username und so weiter.
Möchte ich Kategorien, einzigartig zu sein für die Benutzer. Ein Benutzer kann nicht zwei ctegories mit dem Namen "Essen", aber alle Benutzer können die Kategorie mit der Bezeichnung "Lebensmittel".
In der anderen Frage wurde ich beraten, probieren Sie etwas wie dieses:
* @ORM\Table(name="categories",
* uniqueConstraints={@ORM\UniqueConstraint(name="name_user_id__idx",
* columns={"name", "user_id"})})
und ich versuchte dies:
/**
* @ORM\Entity
*
* @ORM\Table(name="category",
* uniqueConstraints={@ORM\UniqueConstraint(name="name_user_idx",
columns={"name", "fos_user_id"})}))
* @ORM\Entity(repositoryClass="Acme\BudgetTrackerBundle\Entity\CategoryRepository")
* @UniqueEntity(fields={"name", "fos_user_id"}, message="There already is such a category.")
*/
aber ich bekomme diese Fehlermeldung:
Feld 'fos_user_id' nicht zugeordnet ist, durch Lehre, so es nicht überprüft werden kann, die für Einzigartigkeit.
Kann ich nicht ganz nachvollziehen den Fehler. Und ich verstehe nicht den Teil mit den Einschränkungen. Ist das der richtige syntax und die richtige zu schreiben?
Vielen Dank im Voraus!
PS : Sorry für die Eröffnung einer neuen Frage, wenn ich sollte nicht, aber ich habe eine Menge neuer Dinge und beschlossen, eine neue qusetion ist besser, als die Bearbeitung der alt-und Fragen in die Kommentare.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beziehungen wie Kategorie, Benutzer etc... sollten Sie nicht verwenden unique-Einschränkungen auf Spalten, sondern auf die Beziehungen. Zum Beispiel:
statt
versuchen
wo "user" ist der name des zugeordneten Feldes auf Beziehung Entität "Benutzer".
@UniqueEntity(fields={"name", "user"})
, aber jetzt scheint es nicht können verschiedene Benutzer die Kategorien mit dem gleichen Namen.@UniqueEntity(fields={"name", "user"})
funktioniert, wenn ich bin Bearbeiten Sie ein vorhandenes Objekt, aber es nicht bestätigen, wenn ich neue Elemente hinzufügen. Es ist nicht zu schlecht zu schreiben, eine Methode, die zählt, wie viele Kategorien es gibt für diese Benutzer mit diesem Namen, und um zu validieren, basierend auf Ihre Antwort, oder?$form->submit()
oder$form->handleRequest()
denn das ist, was macht der Formularübertragung und-Validierung. Wenn Sie ändern, alle Daten auf das Objekt, nach dem Sie rief die Formular-Funktion, es wird nicht noch einmal bestätigt damit$form->isValid()
nochtrue
obwohl Sie ungültig form nach auf die Vorlage. Ich hatte das exakt gleiche Problem und löste es, indem Sie alle notwendigen Daten auf dem Objekt vor dem Aufruf$form->handleRequest()
.