0

我的模型中有这三个表:

在此处输入图像描述

我需要创建它们之间的关系才能获得有效的实体,但我需要一些帮助。这就是我现在所拥有的:

Proyectos.php

<?php

namespace PI\ProyectoBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="proyectos")
 */
class Proyectos {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=45, unique=true, nullable=false)
     */
    protected $nombre;

    /**
     * @ORM\Column(type="boolean", nullable=true)
     */
    protected $estado;

    /**
     * @ORM\Column(type="string", length=45, nullable=false)
     */
    protected $pais;

    /**
     * @ORM\ManyToOne(targetEntity="PI\ClienteBundle\Entity\Clientes", cascade={"all"})
     * @ORM\JoinColumn(name="cliente", referencedColumnName="id")
     */
    protected $clientes;

    public function getId() {
        return $this->id;
    }

    public function setNombre($nombre) {
        $this->nombre = $nombre;
    }

    public function getNombre() {
        return $this->nombre;
    }

    public function setEstado($estado) {
        $this->estado = $estado;
    }

    public function getEstado() {
        return $this->estado;
    }

    public function setPais($pais) {
        $this->pais = $pais;
    }

    public function getPais() {
        return $this->pais;
    }

    public function setClientes(\PI\ClienteBundle\Entity\Clientes $clientes) {
        $this->clientes = $clientes;
    }

    public function getClientes() {
        return $this->clientes;
    }

}

和 Centros.php

<?php

namespace PI\CentroBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="centros")
 */
class Centros {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="text", unique=true, nullable=false)
     */
    protected $descripcion;

    /**
     * @ORM\ManyToMany(targetEntity="PI\UnidadBundle\Entity\Unidades", inversedBy="centros", cascade={"persist"})
     * @ORM\JoinTable(name="unidades_has_centros",
     *      joinColumns={@ORM\JoinColumn(name="centros_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="unidades_id", referencedColumnName="id")}
     *      )
     */
    protected $unidades;

    public function __construct() {
        $this->unidades = new \Doctrine\Common\Collections\ArrayCollection();
    }

    public function getId() {
        return $this->id;
    }

    public function setDescripcion($descripcion) {
        $this->descripcion = $descripcion;
    }

    public function getDescripcion() {
        return $this->descripcion;
    }

    public function setUnidades(\PI\UnidadBundle\Entity\Unidades $unidades) {
        $this->unidades[] = $unidades;
    }

    public function getUnidades() {
        return $this->unidades;
    }

}

我如何在双方添加 n:m 关系以获取有效实体并使 CRUD 操作比创建新实体 ProyectosHasCentros.php 并将字段放入其中更容易?

4

1 回答 1

0

如果您不将 proyectos_cliente 添加到第二个表,则可以在实体中使用 ManyToMany 关系。如果你想要额外的字段,那么你必须创建一个额外的实体,其中包含与 Proyectos 和 Centros 的关系。除了关系之外,您还可以添加额外的属性,例如 proyectos_cliente。

尝试使用一个 PK 并为 cliente 字段使用 UNIQUE

于 2013-11-14T13:09:58.273 回答