Php Doctrine2在联接表或映射表中插入数据

Php Doctrine2在联接表或映射表中插入数据,php,doctrine-orm,zend-framework2,Php,Doctrine Orm,Zend Framework2,我有一个场景,员工和组织表映射到名为org\u employees的单独表中 我在分别为employees表和organization表添加行方面没有问题,但我的问题是如何为org\u employees表添加记录。我是否需要为org\u员工创建一个单独的实体table means,如果是,ORM关系是如何发生的。有谁能给我指点一下吗 员工实体: <?php namespace Employee\Entity; use Doctrine\Common\Collections\ArrayCo

我有一个场景,员工和组织表映射到名为
org\u employees
的单独表中

我在分别为employees表和organization表添加行方面没有问题,但我的问题是如何为
org\u employees
表添加记录。我是否需要为
org\u员工创建一个单独的实体
table means,如果是,ORM关系是如何发生的。有谁能给我指点一下吗

员工
实体:

<?php
namespace Employee\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Library\Entity\BaseEntity;

/**
 * @ORM\Entity
 * @ORM\Table(name="employees")
 */ 
class Employee extends BaseEntity{

    /**
     * @ORM\Column(name="employee_code", type="string")
     * @var string
     */
    protected $empCode;       

    public function getEmpCode() {
        return $this->empCode;
    }

    public function setEmpCode($empCode) {
        $this->empCode = $empCode;
        return $this;
    }

    public function __toString() {
        return __CLASS__ . ": [id: {$this->id}, name: {$this->name}]";
    }
}
<?php

namespace Organization\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Library\Entity\BaseEntity;   

/**
 * @ORM\Entity
 * @ORM\Table(name="organizations")
 */
class Organization extends BaseEntity{

    /**
     * @ORM\Column(name="name", type="string")
     * @var string
     */
    protected $name; 

    public function getName() {
        return $this->name;
    }

    public function setName($name) {
        $this->name = $name;
    }

    public function __toString() {
        return __CLASS__ . ": [id: {$this->id}, name: {$this->name}]";
    }
}
你可以做两件事

  • 员工
    组织
    之间添加一个
    多人
    关系

  • 在两者之间添加一个附加实体
    EmployeeOrganization(Link)
    。这意味着:

    员工
    -
    多通
    -
    员工组织(链接)
    -
    一通
    -
    组织

  • 还提到了该解决方案:

    为什么多对多关联不那么常见?因为您经常希望将其他属性与关联关联起来,在这种情况下,您将引入一个关联类。因此,直接多对多关联消失,并被3个参与类之间的一对多/多对一关联所取代

    当涉及到实体定义时,第一个解决方案是最简单的,但它只允许您进行链接,而不允许执行其他操作。第二种解决方案的优点是,您可以向联接表中添加其他字段(换句话说,为实体添加属性)。例如,在处创建的一个字段,告诉您员工何时被添加到组织中

    如果不需要这样的附加属性,可以使用
    manytomy


    关于如何定义这些关系,我想参考文档或其他堆栈溢出问题,这里有足够的信息。

    您可能正在寻找多对多关系:几乎是的,但是我如何保存数据呢?请看这里:或者这里:这取决于OrgEmployees是否有任何属性。如果没有属性,那么使用多个关系将为您完成所有工作。持久性是自动处理的。如果您需要其他属性,那么您将需要一个OrgEmployeer实体,该实体与Org和Employee具有一对一的关系,并且持久性的处理方式与任何其他实体一样。第二个解决方案对我来说是必要的解决方案,因为我的链接表中有额外列的场景。您能为我介绍第一个解决方案吗?一些链接怎么做?我必须添加。删除映射中的多行tables@Volatil3检查条令中的文件或多个关系。如果您不使用这些文档,您可以留下另一条评论。