Doctrine2与3个实体的关系

时间:2013-01-17 08:33:02

标签: php mysql doctrine-orm relation

我有3个实体: 用户 角色 公司

通常,一个用户有一个角色和多个公司。 我成功地设置了这个。

但是,如果用户具有取决于公司的角色,我将如何设置关系? 我尝试使用另一个实体UserCompanyRole。

在用户中:

/** @ORM\OneToMany(targetEntity="UserCompanyRole", mappedBy="user")*/
protected $userCompanyRoles;
public function getUserCompanyRoles() {
    return $this->userCompanyRoles;
}
public function addUserCompanyRole(UserCompanyRole $userCompanyRole) {
    $this->userCompanyRoles[] = $userCompanyRole;
}

角色和公司相同

在UserCompanyRole中:

/** @ORM\ManyToOne(targetEntity="User", inversedBy="userCompanyRoles")
 * @ORM\JoinColumn(  onDelete = "CASCADE" )
 */
private $user;
public function getUser() {
    return $this->user;
}
public function setUser(User $user = null) {
    $this->user = $user;
}

角色和公司的相同功能。

创建查询时会变得复杂。 也许有更好的方法?

1 个答案:

答案 0 :(得分:0)

如果用户可以拥有多个角色和公司,我会说是。在公司中,一个角色有多个员工。所以我会把它变成公司。