2017-06-07 2 views
0

Ich verwende Doctrine mit YML-Mappings. Ich habe zwei Entitäten. Eine Group Einheit und eine User Einheit.Doctrine - Entität mit zusammengesetztem Schlüssel kann nicht beibehalten werden

Ich versuche, es einzurichten User s haben eindeutige Namen innerhalb einer Gruppe.

Ich kann ein User erstellen, es eine Group zuweisen, und speichern Sie es in der DB. Aber wenn ich versuche, ein User mit dem gleichen Namen und einem anderen Group zu erstellen, dann bekomme ich einen Fehler, der besagt, dass die eindeutige Beschränkung auf name verletzt ist.

Warum kann ich das User nicht beibehalten?

ihre Zuordnungen wie folgt aussehen:

Entity\Group: 
    type: entity 
    table: groups 
    id: 
     id: 
      type: guid 
      nullable: false 
      id: true 
      generator: 
       strategy: AUTO 
    fields: 
     name: 
      type: text 
      nullable: true 

Entity\User: 
    type: entity 
    table: users 
    id: 
     group: 
      associationKey: true 
      nullable: false 
     name: 
      type: string 
    manyToOne: 
     Group: 
      targetEntity: Entity\Group 
      joinColumn: 
       name: group 
       referencedColumnName: id 

Antwort

0

ich dies schließlich herausgefunden. Ich habe Doktrin verwirrt.

Die Nicht-Standard-Sache war, dass ich einen großgeschriebenen Parameternamen verwende, um ein Objekt darzustellen und dieses in Kleinbuchstaben für die Tabellenspalte zu ändern. Ich tat dies in der manyToOne: Abschnitt mit name:.

Die Dokumentation tut dies nicht wirklich, also wusste ich nicht, dass ich noch den Großbuchstaben-Eigenschaftsnamen im Abschnitt id: referenzieren und den Spaltennamen dort getrennt definieren musste.

Also, ich änderte die User Mapping dazu:

Entity\User: 
    type: entity 
    table: users 
    id: 
     Group: 
      column: group 
      associationKey: true 
      nullable: false 
     name: 
      type: string 
    manyToOne: 
     Group: 
      targetEntity: Entity\Group 
      joinColumn: 
       name: group 
       referencedColumnName: id 
Verwandte Themen