Symfony / Doctrine - 继承ManyToMany

时间:2018-01-24 16:34:29

标签: symfony doctrine

提前感谢您的帮助。

我有不同类型的用户,在我的示例中,用户可以拥有多个品牌和一个品牌多个用户。    用户 - > ManyToMany - >牌 我需要建议,但我不知道使用继承的最佳方法是什么。

/**
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="AppBundle\Repository\User\UserRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorMap({"admin" = "UserAdmin", "brand" = "UserBrand", "developper" = "UserDev"})
* @UniqueEntity(fields={"usernameCanonical"}, errorPath="username", message="user.username.already_used", groups={"Registration", "Profile"}, repositoryMethod="findByUniqueCriteria")
* @UniqueEntity(fields={"emailCanonical"}, errorPath="email", message="user.email.already_used", groups={"Registration", "Profile"}, repositoryMethod="findByUniqueCriteria")
*/
abstract class User implements UserInterface, \Serializable
{
    const TYPE = 'Parent';
    const ROLE_DEFAULT = 'ROLE_USER';
}

/**
 * @ORM\Entity
 * @ORM\Table(name="user_brand")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\User\UserRepository")
 * @ORM\InheritanceType("JOINED")
 */
class UserBrand extends User
{
    const TYPE = 'Brand';
    const ROLE_DEFAULT = 'ROLE_BRAND';  
}

/**
 * @ORM\Entity
 * @ORM\Table(name="user_admin")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\User\UserRepository")
 * @ORM\InheritanceType("JOINED")
 */
class UserAdmin extends User
{
}

1 个答案:

答案 0 :(得分:0)

您拥有从用户到品牌的多对多双向关系。您应该更新两个实体及其orm文件以建立彼此的关系。 从symfony文档中查看以下示例。

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-many-bidirectional