两张表,两种关系
Two tables, two relationships
我有两张桌子;代理商和用户。
在大多数情况下,用户将属于代理机构,否则将为空。这种关系很容易建模,我在用户实体 class/table.
中有一个可为空的 agency_id column/property
代理机构还必须有管理员用户。一个机构可以有多个管理员用户。我正在努力模拟这种关系。
如何在实体 classes/database 表中表示第二个关系?我正在使用 Doctrine 2 (MySQL)、Symfony 3 和 FOSUserbundle。
感谢任何帮助。
您应该能够使用 Doctrine 对 OneToMany 关系船进行建模。用户和管理员本质上是 them 关系(至少如果你一个用户只能是一个机构的管理员,否则这需要是 ManyToMany 引用)。
有关学说协会的信息可以在这里找到:
以下是应该显示关联的一些未经测试的代码:
/**
* @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;
}
我有两张桌子;代理商和用户。
在大多数情况下,用户将属于代理机构,否则将为空。这种关系很容易建模,我在用户实体 class/table.
中有一个可为空的 agency_id column/property代理机构还必须有管理员用户。一个机构可以有多个管理员用户。我正在努力模拟这种关系。
如何在实体 classes/database 表中表示第二个关系?我正在使用 Doctrine 2 (MySQL)、Symfony 3 和 FOSUserbundle。
感谢任何帮助。
您应该能够使用 Doctrine 对 OneToMany 关系船进行建模。用户和管理员本质上是 them 关系(至少如果你一个用户只能是一个机构的管理员,否则这需要是 ManyToMany 引用)。
有关学说协会的信息可以在这里找到:
以下是应该显示关联的一些未经测试的代码:
/**
* @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;
}