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

[SOLUCIONADO] Relaciones ManyToOne Doctrine

Estas en el tema de Relaciones ManyToOne Doctrine en el foro de Symfony en Foros del Web. Hola, Acabo de aterrizar en Symphony y estoy siguiendo un libro "DESARROLLO WEB ÁGIL CON SYMFONY2" y traduciendo lo que voy aprendiendo a la aplicación ...
  #1 (permalink)  
Antiguo 29/05/2013, 08:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 31
Antigüedad: 17 años, 9 meses
Puntos: 0
Relaciones ManyToOne Doctrine

Hola,

Acabo de aterrizar en Symphony y estoy siguiendo un libro "DESARROLLO WEB ÁGIL CON SYMFONY2" y traduciendo lo que voy aprendiendo a la aplicación que quiero desarrollar.

En el libro se establecen relaciones que a mí no me funcionan... Estoy intentando entender cómo funciona esto, pero no consigo que funcione.

Cuando intento crear el esquema de la base de datos:
Código:
 php app/console doctrine:schema:create
me da error en una relación:
Código:
[Doctrine\ORM\ORMException]
Column name `id` referenced for relation from Vizeversa\IdeasBundle\Entity\
AnalisisMorfologico towards Vizeversa\RetosBundle\Entity\Retos does not exist.
La estructura de las entidades que intervienen es esta (No sé por qué no me salen las barras en las líneas namespace Vizeversa\RetosBundle\Entity; pero están...):


Vizeversa\RetosBundle\Entity
Código PHP:
<?php
namespace VizeversaRetosBundleEntity
;

use 
DoctrineORMMapping as ORM;

/**
 * Retos
 *
 * @ORM\Table(name="retos")
 * @ORM\Entity
 */
class Retos
{
    
/**
     * @var integer
     *
     * @ORM\Column(name="id_reto", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue
     */
    
private $idReto;

    
/**
     * @ORM\ManyToOne(targetEntity="Vizeversa\UsuariosBundle\Entity\Usuarios")
     */
    
private $usuario;

    
/**
     * @var string
     *
     * @ORM\Column(name="nombre", type="string", length=255)
     */
    
private $nombre;

   {...}

Vizeversa\UsuariosBundle\Entity
Código PHP:
<?php

namespace VizeversaUsuariosBundleEntity
;

use 
DoctrineORMMapping as ORM;

/**
 * Usuarios
 *
 * @ORM\Table(name="usuarios")
 * @ORM\Entity
 */
class Usuarios
{
    
/**
     * @var integer
     *
     * @ORM\Column(name="id_usuario", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue
     */
    
private $idUsuario;

    
/**
     * @var string
     *
     * @ORM\Column(name="usuario", type="string", length=32)
     */
    
private $usuario;

    
/**
     * @var string
     *
     * @ORM\Column(name="password", type="string", length=32)
     */
    
private $password;

    
/**
     * @var string
     *
     * @ORM\Column(name="nombre", type="string", length=255)
     */
    
private $nombre;
    

    {...}
Vizeversa\IdeasBundle\Entity
Código PHP:
<?php

namespace VizeversaIdeasBundleEntity
;

use 
DoctrineORMMapping as ORM;

/**
 * AnalisisMorfologico
 *
 * @ORM\Table(name="analisis_morfologico")
 * @ORM\Entity
 */
class AnalisisMorfologico
{

    
/**
     * @ORM\Id
     * @ORM\ManyToOne(targetEntity="Vizeversa\RetosBundle\Entity\Retos")
     */
    
private $reto;

    
/**
     * @ORM\Id
     * @ORM\ManyToOne(targetEntity="Vizeversa\UsuariosBundle\Entity\Usuarios")
     */
    
private $usuario;

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

{...}
¿Alguien sabe qué estoy haciendo mal?

Gracias!
Javi.
__________________
Tatuajes
  #2 (permalink)  
Antiguo 29/05/2013, 08:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 31
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Relaciones ManyToOne Doctrine

No hay nada como plantear una pregunta para solucionarla por mí mismo... He visto que, en el ejemplo del libro, el campo referenciado se llamaba id, no como en mi caso, que se llama id_reto, por lo que hay que introducir una línea más en la relación:

Código PHP:
* @ORMJoinColumn(name="reto_id"referencedColumnName="id_reto"
Salu2!
Javi.
__________________
Tatuajes

Etiquetas: doctrine, relaciones
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 13:25.