假设我有以下课程hiearchy:
/**
* @MappedSuperclass
*/
class Notification {
/**
* @ORM\ManyToOne(targetEntity="Miroc\CoreBundle\Entity\User", inversedBy="notifications", cascade={"persist", "remove"})
*/
private $user;
}
class UserNotification extends Notification
class ProjectNotification extends Notification
此外,假设我有一个用于映射通知的用户类:
class User {
/**
* @ORM\OneToMany(targetEntity="Miroc\CoreBundle\Entity\Notification", mappedBy="user", cascade={"persist", "remove"})
*/
private $notifications;
}
现在,我想要的是:如果用户创建了X UserNotifications和Y ProjectNotifications,那么在User类中调用$ notification的getter应该返回一个长度为| X + Y |的数组。包含两种类型的所有实例。这当然也应该扩展到Notification的其他子类。
这可能,如果是这样的话怎么样?上面的例子不起作用。
答案 0 :(得分:1)
我认为您可能正在寻找单表继承策略,如中所述 Doctrine Docs。我认为你可能需要添加自己的方法来组合这两个数组。
当然可以为两种类型的通知设置两个单独的实体,并将它们组合起来,但是从你的问题我假设你想要它们在一个表中。