gpt4 book ai didi

mysql - 两张表,两种关系

转载 作者:行者123 更新时间:2023-11-29 21:16:32 25 4
gpt4 key购买 nike

我有两张 table ;机构和用户。

在大多数情况下,用户将属于代理机构,否则将为空。这种关系的建模非常简单,我在用户实体类/表中有一个可为空的 Agency_id 列/属性。

代理机构还必须拥有管理员用户。一个机构可以拥有多个管理员用户。我正在努力模拟这种关系。

如何表示实体类/数据库表中的第二个关系?我正在使用 Doctrine 2 (MySQL)、Symfony 3 和 FOSUserbundle。

感谢任何帮助。

最佳答案

您应该能够使用 Doctrine 通过 OneToMany 关系船对此进行建模。用户和管理员本质上都是他们的关系(至少如果一个用户只能是一个机构的管理员,否则这需要是一个多对多引用)。

有关教义协会的信息可以在这里找到:

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;

}

关于mysql - 两张表,两种关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35891513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com