自引用表与交叉引用表之间的关联映射

时间:2018-09-05 11:16:59

标签: php symfony

对于我的问题,如何在symfony中添加关联映射,我有点困惑。

我有两个实体:用户和朋友。

用户表具有一个ID作为主键(自动)。 friends表具有一个id(自动,主键),userId和friendId作为列。 friendId也是User表中的用户。

朋友表:

ID  userId    friendsId
---------------------
1    564          123
2    564          345
3    777          456


User Table:
ID  Name
---------------------
123  Alfons
345  Paul
456  Guiseppe
564  Mary
777  Belinda

现在我想映射两个表,以便可以在我的Userobject中调用一个函数,例如说getFriends(): User。此函数应返回引用存储我的用户ID的friends表的Usersobjects。

正确的方法应该是一对多关联,单向连接表?

提前谢谢;-)

1 个答案:

答案 0 :(得分:1)

这是实体字段的外观

在用户实体类中

    /**
     * @var int
     * @ORM\Column(name="ID", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     * @ORM\Column(name="Name", type="string", length=100, nullable=true)
     */
    private $name;        


    /**
     * @var Collection
     * @ORM\OneToMany(targetEntity="Friend", mappedBy="friendUser")
     * @ORM\JoinTable(name="User")
     */
    private $friends;

在朋友实体类中

    /**
     * @var int
     * @ORM\Column(name="ID", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * This is the user
     *
     * @ORM\ManyToOne(targetEntity="User", inversedBy="ID")
     * @ORM\JoinColumn(name="userId", referencedColumnName="ID")
     */
    private $user;

    /**
     * This is the friends' user entity
     *
     * @ORM\ManyToOne(targetEntity="User", inversedBy="ID")
     * @ORM\JoinColumn(name="friendsId", referencedColumnName="ID")
     */
    private $friendUser;