【发布时间】:2023-02-26 12:51:15
【问题描述】:
在最近的会议上,我得到一个要求,对于所有多对多关系,我们应该创建中间实体并具有多对一和一对多关系。 例如,我们有实体“用户”和“角色”。我需要创建一个中间实体“UserRole”。
class User implements UserInterface, PasswordAuthenticatedUserInterface
{
/**
* @ORM\OneToMany(targetEntity=UserRole::class, mappedBy="user")
*/
private $userRole;
}
class UserRole
{
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="userRole")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity="Role", inversedBy="userRole")
* @ORM\JoinColumn(nullable=false)
*/
private $role;
}
class Role
{
/**
* @ORM\OneToMany(targetEntity=UserRole::class, mappedBy="role")
*/
private $userRole;
}
我知道这种方法被一些开发人员使用,以防 UserRole 实体中有一些额外的参数,但在上面的例子中 - 没有。是否有一些学说官方建议或最佳实践?什么是优点和缺点?
【问题讨论】:
标签: php symfony doctrine many-to-many