Doctrine 2获取连接字段名称

时间:2013-06-21 09:00:29

标签: join doctrine-orm

我想找到加入的字段名称,但我找不到如何获取它。我有这样的场景。我有2个表例如用户和角色。在用户实体中,存在Roles字段,该字段是集合。我需要一个获取参数相关对象(Roles)的方法,它必须返回role_id,这是用户的外键。我找不到任何方法。

1 个答案:

答案 0 :(得分:0)

假设您的实体声明如下:

/**
 * @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
    // ...
}

您可以致电Collection#map()来检索ID:

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

另一种选择是使用Doctrine连接来检索原始结果。