2017-10-07 14 views
0

J'ai quelques entités et j'essaie de configurer les relations entre les utilisateurs et les permissions. Je veux avoir la possibilité d'assigner un groupe d'autorisations à l'utilisateur, j'ai donc créé l'entité User, GroupAssociationsUser, Permissions. Je pense que le meilleur moyen est de créer une relation ManyToOne dans GroupAssociationsUtilisateur aux utilisateurs et aux autorisations. Bellow vous pouvez voir le code de l'entité GroupAssociationsUser:Symfony 3, relation ManyToOne sous forme

/** 
* @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; 

Je relation également créé dans l'entité utilisateur:

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


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

Enfin dans l'entité d'autorisation:

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

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

Donc, fondamentalement, je veux avoir sélectionnez la liste sur ma page d'édition d'utilisateur et je veux avoir la possibilité de choisir le groupe d'autorisation à assigner à l'utilisateur.

Je crée formulaire:

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

Et le problème est que pas de mater ce que je fais, je l'ai obtenu que la liste des autorisations sortant ou si je change le code pour:

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

J'ai obtenu la permission attribuée seulement sans assignation. Qu'est-ce que je fais mal?

Même si j'ai obtenu tous les noms des permissions, comment puis-je forcer la doctrine à marquer un champ déjà assigné?

+0

essayez d'utiliser générateur de requêtes - [comme ça] (http://symfony.com/doc/current /reference/forms/types/entity.html#using-a-custom-query-for-the-entities) –

+0

Salut Peter, que dois-je exactement retourner? ' 'classe' => 'AppBundle: Permissions', 'query_builder' => fonction (EntityRepository er $) { \t \t \t \t \t retour er- de $> createQueryBuilder ('u') \t \t \t \t \t - > orderBy ('u.id', 'ASC'); En utilisant mes méthodes (code ci-dessus), je peux obtenir des informations de champ affectées mais sans les assigner. Ou comme dans le premier exemple, je peux obtenir toutes les autorisations mais je n'ai aucune idée comment devrais-je sélectionner l'élément sélectionné (

Répondre