我想'链接'一些对象。想象一下,你有这些记录的人员表:
你可以看到它是同一个人。我希望有一个存储替代人员的协会。例如,ID
= 1和NAME
= Barack Obama linkedPersons
的人看起来像这样:
linkedPersons:
Obama Barack
Barack Hussein Obama
(optionally with Barack Obama itself)
恕我直言,它应该是多对多,单向,自引用关联,但我不知道如何实现这样的关联。
答案 0 :(得分:1)
我认为你可以做简单的ManyToMany单向映射。关系只关系两个用户。这将在数据库中创建额外的记录(A - > B和B - > A),但我认为它应该可以正常工作。
<?php
/** @Entity */
class User
{
/**
* @ManyToMany(targetEntity="User")
* @JoinTable(name="alternateUsers",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="alternate_user_id", referencedColumnName="id")}
* )
*/
private $alternateUsers;
public function __construct() {
$this->alternateUsers = new \Doctrine\Common\Collections\ArrayCollection();
}
public function addAlternateUser(User $user) {
$this->alternateUsers[] = $user;
$user->alternateUsers[] = $this;
}
}