2013-11-14 5 views
0

나는 나의 모델이 세 개의 테이블이 있습니다엔티티 정의에 ProyectosHasCentros 테이블을 삽입하는 방법은 무엇입니까?

enter image description here

그리고 유효한 엔티티를 얻기 위해 그들 사이의 관계를 만들 필요하지만 여기에 몇 가지 도움이 필요합니다. 이것은 내가 지금 무엇을 가지고 :

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 관계가 유효한 개체를 얻을에 할 새로운 Entity ProyectosHasCentros.php를 만들고 내부에 필드를 넣는 것보다 CRUD 작업을 더 쉽게 만들 수 있습니까?

답변

0

두 번째 테이블에 proyectos_cliente를 추가하지 않으면 엔티티에서 ManyToMany 관계를 사용할 수 있습니다. 추가 필드가 필요하면 Proyectos 및 Centros와의 관계가 포함 된 추가 엔티티를 만들어야합니다. 관계 옆에 추가 속성 (예 : proyectos_cliente)을 추가합니다.

클라이언트 필드에 하나의 PK를 사용하고 UNIQUE를 사용하십시오.