Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Relación OneToMany

Estas en el tema de Relación OneToMany en el foro de Symfony en Foros del Web. Buenas a todos y gracias por la ayuda. Mira tengo 3 entidades y quiero relacionar que districts y states esten relacionadas con empresa. Si hace ...
  #1 (permalink)  
Antiguo 29/02/2016, 17:20
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 1 mes
Puntos: 2
Relación OneToMany

Buenas a todos y gracias por la ayuda.

Mira tengo 3 entidades y quiero relacionar que districts y states esten relacionadas con empresa. Si hace falta pongo todo el código pero para que no sea tan largo pongo donde tengo la duda.

Estoy empezando con Symfony y voy un poco liado

En targetEntity tengo que poner el nombre de la entidad que quiero relacionar no?

En mappedBy tengo que poner el nombre de la entidad, de la tabla o de que?

Tengo el nombre de la tabla que quiero crear a la BD diferente a la entidad, para que sea más corto el nombre en la entidad.

El error viene al utilizar doctrine:schema:update que dice que no encuentra la entidad.

Las tablas a la BD no las tengo creadas.

Gracias.

Espero haber explicado bien.

Entidad InstCom.php
Código PHP:
<?php

namespace VnfqInstComBundleEntity
;

use 
DoctrineORMMapping as ORM;
use 
DoctrineCommonCollectionsArrayCollection;

/**
 * InstCom
 *
 * @ORM\Table(name="installation_companies")
 * @ORM\Entity(repositoryClass="Vnfq\InstComBundle\Repository\InstComRepository")
 */
class InstCom
{
    
/**
     * @ORM\OneToMany(targetEntity="District", mappedBy="installation_companies")
     */
    
protected $districts;
    
    
/**
     * @ORM\OneToMany(targetEntity="State", mappedBy="installation_companies")
     */
    
protected $states;
 
    public function 
__construct()
    {
        
$this->districts = new ArrayCollection();
        
$this->states = new ArrayCollection();
    }
Entidad District.php
Código PHP:
<?php

namespace VnfqInstComBundleEntity
;

use 
DoctrineORMMapping as ORM;

/**
 * Disctrict
 *
 * @ORM\Table(name="disctricts_brasil")
 * @ORM\Entity(repositoryClass="Vnfq\InstComBundle\Repository\DisctrictRepository")
 */
class Disctrict
{
    
/**
     * @ORM\ManyToOne(targetEntity="InstCom", inversedBy="disctricts_brasil")
     * @ORM\JoinColumn(name="district", referencedColumnName="id")
     */
    
protected $instcom;
Entidad State.php
Código PHP:
<?php

namespace VnfqInstComBundleEntity
;

use 
DoctrineORMMapping as ORM;

/**
 * State
 *
 * @ORM\Table(name="states_brasil")
 * @ORM\Entity(repositoryClass="Vnfq\InstComBundle\Repository\StateRepository")
 */
class State
{
    
/**
     * @ORM\ManyToOne(targetEntity="InstCom", inversedBy="states_brasil")
     * @ORM\JoinColumn(name="state", referencedColumnName="id")
     */
    
protected $instcom;
  #2 (permalink)  
Antiguo 01/03/2016, 06:41
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Relación OneToMany

Prueba así. Más o menos. No lo he probado.

Aquí tienes más ayuda: http://doctrine-orm.readthedocs.org/...n-mapping.html

Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace VnfqInstComBundleEntity;
  4.  
  5. use DoctrineORMMapping as ORM;
  6. use DoctrineCommonCollectionsArrayCollection;
  7.  
  8. /**
  9.  * InstCom
  10.  *
  11.  * @ORM\Table(name="installation_companies")
  12.  * @ORM\Entity(repositoryClass="Vnfq\InstComBundle\Repository\InstComRepository")
  13.  */
  14. class InstCom
  15. {
  16.     /**
  17.      * @ORM\OneToMany(targetEntity="District", mappedBy="instcom")
  18.      */
  19.     protected $districts;
  20.    
  21.     /**
  22.      * @ORM\OneToMany(targetEntity="State", mappedBy="instcom")
  23.      */
  24.     protected $states;
  25.  
  26.     public function __construct()
  27.     {
  28.         $this->districts = new ArrayCollection();
  29.         $this->states = new ArrayCollection();
  30.     }

Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace VnfqInstComBundleEntity;
  4.  
  5. use DoctrineORMMapping as ORM;
  6.  
  7. /**
  8.  * Disctrict
  9.  *
  10.  * @ORM\Table(name="disctricts_brasil")
  11.  * @ORM\Entity(repositoryClass="Vnfq\InstComBundle\Repository\DisctrictRepository")
  12.  */
  13. class Disctrict
  14. {
  15.     /**
  16.      * @ORM\ManyToOne(targetEntity="InstCom", inversedBy="districts")
  17.      * @ORM\JoinColumn(name="districts", referencedColumnName="id")
  18.      */
  19.     protected $instcom;

Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace VnfqInstComBundleEntity;
  4.  
  5. use DoctrineORMMapping as ORM;
  6.  
  7. /**
  8.  * State
  9.  *
  10.  * @ORM\Table(name="states_brasil")
  11.  * @ORM\Entity(repositoryClass="Vnfq\InstComBundle\Repository\StateRepository")
  12.  */
  13. class State
  14. {
  15.     /**
  16.      * @ORM\ManyToOne(targetEntity="InstCom", inversedBy="states")
  17.      * @ORM\JoinColumn(name="states", referencedColumnName="id")
  18.      */
  19.     protected $instcom;

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:21.