2013-06-21 1 views
-1

Je veux trouver le nom du champ joint mais je n'ai pas trouvé comment l'obtenir. J'ai un scenerio comme ça. J'ai 2 table par exemple Utilisateur et rôles. Dans l'entité utilisateur, il y a un champ Rôles qui est une collection. J'ai besoin d'une méthode qui récupère un objet relaché par un paramètre (Roles) et qui doit renvoyer role_id qui est la clé étrangère de l'utilisateur. Je n'ai trouvé aucune méthode.Doctrine 2 obtenir le nom du champ de jointure

Répondre

0

En supposant que vos entités sont déclarées comme ci-dessous:

/** 
* @ORM\Entity 
*/ 
class User 
{ 
    /** 
    * @ORM\ManyToMany(targetEntity="Role") 
    */ 
    private $roles; 

    /** 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getRoles() 
    { 
     return $this->roles; 
    } 

    // Other fields and methods 
    // ... 
} 

/** 
* @ORM\Entity 
*/ 
class Role 
{ 
    /** 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    // Other fields and methods 
    // ... 
} 

Vous pouvez appeler Collection#map() pour récupérer les ID:

$user = $this->getUser(); 
$roleIDs = $user->getRoles()->map(function (Role $role) { 
    return $role->getId(); 
}); 

Une autre option est d'utiliser la connexion Doctrine pour obtenir des résultats bruts.

+0

Je n'ai pas besoin de l'identifiant, j'ai besoin du nom de la colonne de la clé étrangère. Je suis dans "role_id" que je dois acquérir. @Florent – GirginSoft

Questions connexes