你應該能夠用OneToMany關係使用Doctrine來建模。用戶和管理員基本上都是他們之間的關係(至少如果你的一個用戶只能是一個代理的管理員,否則這需要是一個ManyToMany參考)。
約主義協會的信息可以在這裏找到:
http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html
以下是一些未經測試的代碼,應該顯示的關聯:
/**
* @ORM\Entity
*/
class Agency {
/**
* @ORM\OneToMany(targetEntity="User", mappedBy="agency")
*
* @var $users \Doctrine\Common\Collections\Collection
*/
protected $users;
/**
* @ORM\OneToMany(targetEntity="User", mappedBy="adminOfAgency")
*
* @var $users \Doctrine\Common\Collections\Collection
*/
protected $admins;
public function __construct() {
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
$this->admins = new \Doctrine\Common\Collections\ArrayCollection();
}
}
。
/**
* @ORM\Entity
*/
class User extends \FOS\UserBundle\Entity\User {
/**
* @ORM\ManyToOne(targetEntity="Agency", inversedBy="users")
* @JoinColumn(name="agency_id", referencedColumnName="id")
*/
protected $agency;
/**
* @ORM\ManyToOne(targetEntity="Agency", inversedBy="admins")
* @JoinColumn(name="admin_of_agency_id", referencedColumnName="id")
*/
protected $adminOfAgency;
}
我認爲你正在尋找[一個一對多雙向](http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html #一對多 - 雙向)關聯映射,其中'OneToMany'關聯(在您的「Agency」實體中)您將擁有'users'集合,並且在ManyToOne關聯上'agencyId' – takeit