我想在同一张表之间创建多个关系
Project <--> ProjectManagers <--> Employees
Project <--> ProjectEmployees <--> Employees
我已经有一个“项目和员工”实体。
如何使用注释建立连接?
已经尝试了多对多双向关系。但是该学说将生成1个连接表,但也需要一个projects_managers表。
<?php
/** @Entity */
class Project
{
// ...
/**
* Many Projects have Many Employees.
* @ManyToMany(targetEntity="Employee", inversedBy="projects")
* @JoinTable(name="projects_employees")
*/
private $employees;
public function __construct() {
$this->employees = new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
/** @Entity */
class Employee
{
// ...
/**
* Many Employees have Many Projects.
* @ManyToMany(targetEntity="Project", mappedBy="employees")
*/
private $projects;
public function __construct() {
$this->projects = new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
最佳答案
您不能将两个表创建为查找表然后创建关系吗?例如,使用字段id,project_id和employee_id创建一个ProjectManagers实体。与ProjectEmployees相同。对于ProjectManagers实体,您将创建从Projects到ProjectManagers的一对多。雇员实体也是如此。如果您正确设置了关系,则可以在控制器中执行以下操作:
$project = $this->getDoctrine()->getRepository( 'AppBundle:Projects' )->findById( $id );
$employees = $project->getProjectManagers()->getEmployees();
关于php - Symfony在2个表之间有多个联接表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43004515/