2017-10-07 2 views
0

Ich habe ein paar Entitäten und ich versuche, Beziehungen zwischen Benutzern und Berechtigungen einzurichten. Ich möchte die Möglichkeit haben, dem Benutzer eine Gruppe von Berechtigungen zuzuweisen, also habe ich Entity User, GroupAssociationsUser, Permissions erstellt. Ich denke, dass der beste Weg ist, Relation ManyToOne in GroupAssociationsUser zu Benutzern und zu Berechtigungen zu erstellen. Bellow Sie Code von GroupAssociationsUser Einheit sehen:Symfony 3, ManyToOne-Beziehung in Form

/** 
* @ORM\ManyToOne(targetEntity="Permissions", inversedBy="group_assoc_user") 
* @ORM\JoinColumn(name="group_permissions", referencedColumnName="id", nullable=FALSE) 
*/ 
private $group_permissions; 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="group_assoc_user") 
* @ORM\JoinColumn(name="user_assoc", referencedColumnName="id", nullable=FALSE) 
*/ 
private $user_assoc; 

Dann habe ich auch in User-Entität erstellt Beziehung:

/** 
* @ORM\OneToMany(targetEntity="GroupAssociationsUser", mappedBy="user_assoc") 
*/ 
private $group_assoc_user; 


public function __construct() 
{ 
    $this->group_assoc_user = new ArrayCollection(); 
} 

schließlich in Permission Einheit:

/** 
* @ORM\OneToMany(targetEntity="GroupAssociationsUser", mappedBy="group_permissions") 
*/ 
private $group_assoc_user; 

public function __construct() 
{ 
$this->group_assoc_user = new ArrayCollection(); 
} 

Also im Grunde möchte ich haben Wählen Sie die Liste auf meiner Benutzer-Bearbeitungsseite aus, und ich möchte die Berechtigungsgruppe auswählen können, die dem Benutzer zugewiesen werden soll.

Also habe ich Form mit:

->add('group_assoc_user', EntityType::class, array(
      'class' => 'AppBundle:Permissions', 
      'choice_label'=> 'group_name', 
      'placeholder' => 'no rights', 
     )) 

Und das Problem ist, dass keine mater, was ich tue, habe ich nur Liste der austretenden Berechtigungen bekam oder ob ich ändern Code:

 ->add('group_assoc_user', EntityType::class, array(
      'class' => 'AppBundle:GroupAssociationsUser', 
      'choice_label'=> 'Permissions.group_name', 
      'placeholder' => 'no rights', 
     )); 

Ich habe nur die zugewiesene Berechtigung aufgelistet, ohne sie zugewiesen zu haben. Was mache ich falsch?

Selbst wenn ich alle Berechtigungsnamen habe, wie kann ich Doktrin zwingen, bereits zugewiesene Felder zu markieren?

+0

versuchen Query Builder zu verwenden - [wie folgt] (http://symfony.com/doc/current /reference/forms/types/entity.html#using-a-custom-query-for-the-entities) –

+0

Hallo Peter, was genau sollte ich zurückgeben? ' 'class' => 'AppBundle: Berechtigungen', 'query_builder' => Funktion (EntityRepository $ er) { \t \t \t \t \t return $ ER-> createQueryBuilder ('u') \t \t \t \t \t - > orderBy ('u.id', 'ASC'); \t \t \t \t}, ' Mit meinen Methoden (Code oben), kann ich Feldinformationen zugewiesen bekommen, aber ohne Zuordnung. Oder wie im ersten Beispiel kann ich alle Berechtigungen erhalten, aber ich habe keine Ahnung, wie ausgewählt werden soll (

Antwort