【问题标题】:Association Mapping on self referencing table with Cross reference table自引用表与交叉引用表的关联映射
【发布时间】:2018-09-05 11:16:58
【问题描述】:

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

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

用户表有一个 id 作为主键(自动)。 朋友表有一个 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

现在我想映射这两个表,我可以在我的用户对象中调用一个函数,例如getFriends(): User。此函数应返回引用存储我的用户 ID 的朋友表的用户对象。

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

提前谢谢你;-)

【问题讨论】:

    标签: php symfony


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      相关资源
      最近更新 更多