将同一实体中的2个字段映射到另一个实体

时间:2015-08-20 09:34:30

标签: entity-framework symfony doctrine-orm

我有一个Symfony2论坛应用程序,其中包括2个实体,即" User"和#34;对话"。对话总是只有2个人之间,我需要知道启动它的用户以及与之对话的用户。这被称为" userFrom"和" userTo"。我想映射" userFrom"用" id"来自"用户"的列和" userTo"来自" User"。

的相同列

我做到了:

/**
 * User
 *
 * @ORM\Table(name="app_users")
 * @ORM\Entity(repositoryClass="Forum\CoreBundle\Repository\UserRepository")
 */
class User extends Timestampable implements UserInterface, \Serializable
{
    /**
     * @var ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="Conversation", mappedBy="fromUser")
     */
    private $conversationsFromUser;

    /**
     * @var ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="Conversation", mappedBy="toUser")
     */
    private $conversationsToUser;
}

/**
 * Conversation
 *
 * @ORM\Table(name="conversation")
 * @ORM\Entity(repositoryClass="Forum\CoreBundle\Repository\ConversationRepository")
 */
class Conversation extends Timestampable
{
    /**
     * @var User
     *
     * @ORM\ManyToOne(targetEntity="User", inversedBy="$conversationsFromUser")
     * @ORM\JoinColumn(name="id_from_user", referencedColumnName="id", nullable=false)
     * @Assert\NotBlank
     */
    private $fromUser;

    /**
     * @var User
     *
     * @ORM\ManyToOne(targetEntity="User", inversedBy="$conversationsToUser")
     * @ORM\JoinColumn(name="id_to_user", referencedColumnName="id", nullable=false)
     * @Assert\NotBlank
     */
    private $toUser;
}

但Symfony2抱怨说"映射彼此不一致"。 当我要求时,我想要那个:

  • $ user-> getConversationsFromUser()获取该用户启动的所有会话的列表

  • $ user-> getConversationsToUser()获取该用户的所有会话列表

  • $ conversation-> getFromUser()以获取启动该会话的用户

  • $ conversation-> getToUser()以获取发送对话的用户

是否可以使用Doctrine2映射我想要的内容?

1 个答案:

答案 0 :(得分:1)

inversedBy =" $ conversationsFromUser" => inversedBy =" conversationsFromUser"

" $" !!!