У меня есть класс, расширяющий класс fos_user от FOSUserBundle. У каждого пользователя есть свои роли. Если у пользователя есть роль «BASIC», у него есть отношение OneToMany к Entry (один базовый пользователь имеет много записей). Если у пользователя есть роль «МАСТЕР», он имеет отношение ManyToMany к объекту 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, возможный шаблон - наследование одной таблицы. Вы можете посмотреть пример здесь.
И ваш вопрос…?