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

问题描述 投票:1回答:1

我很困惑,如何在symfony中为我的问题添加关联映射。

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

用户表的id为主键(auto)。 friends表具有id(auto,primary key),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。

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

先感谢您;-)

php symfony
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.