symfony中的映射不一致

时间:2018-04-23 09:07:46

标签: symfony orm doctrine

我有两个实体UserNotification。在每个通知中,senderreceiver都是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实体中的值,但我不确定。如果是,那么我不知道如何解决这个问题。 我在这个网站上发现了类似的案例,但没有一个像我一样(或者我还没有找到它们)。

我知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

我认为问题可能是您有两个属性(senderreceiver)并使用相同的列来映射它们。如果您需要区分已发送和已接收,则需要在sender上拥有receiverNotification属性,然后在您的用户中拥有sentNotifications和{{1} }。如果您需要在一次调用中将所有内容组合在一起,则可以在用户的​​非映射方法中将它们组合在一起,例如:

receivedNotifications