繁体   English   中英

同一实体symfony上有很多对很多

[英]many to many on the same entity symfony

我正在使用FOSUserBunde,并且我想在User实体上建立ManytoMany关系。

我看过这篇文章,并且尝试过做同样的事情。

这是我的代码

class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\User", inversedBy="userfriends")
     */
    private $users;

    /**
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\User", mappedBy="users")
     */
    private $userfriends;

当我运行update database命令时,我得到了user_userusertargetusersource

我的问题是我想向所有usersfriends显示usersfriends 任何帮助请..

我认为您错过了代码中的一些地方。 首先,由于您进行了“多对多”操作,因此将产生一个新表。 那就是你的(用户目标,用户源)。 然后,您了解到必须有某种数组或某种方式来检索信息。 在SQL中,对于一个显示所有他的朋友的用户George,您的自引用多对多就像:

SELECT F.Id 
   FROM user U 
   JOIN user_user MtM ON U.Id = MtM.usersource
   JOIN user F ON F.Id = MtM.usertarget
  WHERE U.Name = 'George'

联接应该以某种方式在代码中复制。 可能是这样的:

* @ORM\JoinTable(name="user_user",
*   joinColumns={
*     @ORM\JoinColumn(name="usersource", 
*                     referencedColumnName="userfriends")
*   },
*   inverseJoinColumns={
*     @ORM\JoinColumn(name="usertarget", referencedColumnName="id")
*   }
* )

响应很大程度上取决于您显示所有用户朋友的意思 对于Symfony中的表示,您可能需要比一个变量更复杂的东西。 当有数据时,它们需要可见的表示形式,以某种方式显示结果。 检查以下链接以获取一些想法:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM