我有两个实体User
和Notification
。在每个通知中,sender
和receiver
都是User
个实体。但是学说并不喜欢它。模式验证说:
The mappings ACME\CoreBundle\Entity\Notifications#sender and ACME\CoreBundle\Entity\User#notifications are inconsistent with each other.
以下是两个实体的映射:
/**
* Notifications
*
* @ORM\Table(name="notifications")
*
*/
class Notifications
{
/**
* @ORM\ManyToOne(targetEntity="WD\UserBundle\Entity\User", inversedBy="notifications")
*/
protected $sender;
/**
* @ORM\ManyToOne(targetEntity="WD\UserBundle\Entity\User", inversedBy="notifications")
*/
protected $receiver;
}
用户一:
/**
* User
*
* @ORM\Table(name="My_user")
*
*/
class User extends BaseUser
{
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="WD\CoreBundle\Entity\Notifications", mappedBy="receiver")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $notifications;
}
出于可读性的原因,我没有把整个实体代码,但我相信这些应该是足够的信息。
我相信这个错误来自于我不能把两个' mappedBy" User
实体中的值,但我不确定。如果是,那么我不知道如何解决这个问题。
我在这个网站上发现了类似的案例,但没有一个像我一样(或者我还没有找到它们)。
我知道如何解决这个问题吗?
答案 0 :(得分:2)
我认为问题可能是您有两个属性(sender
,receiver
)并使用相同的列来映射它们。如果您需要区分已发送和已接收,则需要在sender
上拥有receiver
和Notification
属性,然后在您的用户中拥有sentNotifications
和{{1} }。如果您需要在一次调用中将所有内容组合在一起,则可以在用户的非映射方法中将它们组合在一起,例如:
receivedNotifications