Join 原则2获取连接字段名

Join 原则2获取连接字段名,join,doctrine-orm,Join,Doctrine Orm,我想查找加入的字段名,但找不到如何获取它。我有一个这样的场景。我有两个表用于实例用户和角色。在用户实体中有一个角色字段,它是一个集合。我需要一个方法,它是获取一个参数相关对象(角色),它必须返回角色的id,这是用户的外键。我找不到任何方法 假设您的实体声明如下: /** * @ORM\Entity */ class User { /** * @ORM\ManyToMany(targetEntity="Role") */ private $roles;

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

假设您的实体声明如下:

/**
 * @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
    // ...
}
您可以调用以检索ID:

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

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

我不需要id,我需要外键的列名。我必须获得“角色id”@弗洛朗