对此场景建模的最佳实践

Best practices for modelling this scenario

我有一个 class 从 FOSUserBundle 扩展 fos_user class。 每个用户都有一些角色。 如果用户具有 "BASIC" 角色,则他与实体 Entry 具有 OneToMany 关系(一个基本用户有多个条目)。 如果用户有角色 "MASTER" 他与实体 House 有多对多关系(许多主用户有很多房子)。

我这样做了:

/**
 * @ORM\Entity
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\ManyToMany(targetEntity="House", inversedBy="users")
     */
    protected $houses;

    /**
     * @ORM\OneToMany(targetEntity="Entry", mappedBy="user")
     */
    protected $entries;

}  

但是听起来不太好。

这个场景有设计模式吗?

正如@lxg 所写,一种可能的模式是单一table 继承。 你可以看一个例子here.