对此场景建模的最佳实践
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.
我有一个 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.