[英]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_user
和usertarget
和usersource
我的问题是我想向所有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中的表示,您可能需要比一个变量更复杂的东西。 当有数据时,它们需要可见的表示形式,以某种方式显示结果。 检查以下链接以获取一些想法:
查询多对多关系,并在Symfony和Doctrine中显示好结果。请注意,有一个小树枝可以显示结果。 在您的情况下,它可能看起来像:
<tr> <td> {{user.id}} </ td> <td> {{user.name}} </ td> <td> {%用户中的朋友。userfriends%} {{friend.id} } {%endfor%} </ td> </ tr>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.