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

[SOLUCIONADO] Alguien le ve algo raro a esta entity?

Estas en el tema de Alguien le ve algo raro a esta entity? en el foro de Symfony en Foros del Web. Hola, tengo la siguiente entity declarada Código PHP: namespace ProyectoComisionBundleEntity ; use  DoctrineORMMapping  as  ORM ; /**  * Vdespachoodexp  *   * @ORM\Table(name="VDESPACHO_OD_EXP")  * @ORM\Entity  */ class  Vdespachoodexp {      ...
  #1 (permalink)  
Antiguo 25/03/2014, 15:25
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Sonrisa Alguien le ve algo raro a esta entity?

Hola, tengo la siguiente entity declarada
Código PHP:
namespace ProyectoComisionBundleEntity;

use 
DoctrineORMMapping as ORM;

/**
 * Vdespachoodexp
 * 
 * @ORM\Table(name="VDESPACHO_OD_EXP")
 * @ORM\Entity
 */
class Vdespachoodexp
{
    
/**
     * @var integer
     * @ORM\Column(name="DESPACHO_ID", type="integer")
     * @ORM\Id
     */
    
private $id;

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

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


/**
     * Get id
     *
     * @return integer 
     */
    
public function getId()
    {
        return 
$this->id;
    }

    
/**
     * Set despachoNro
     *
     * @param string $despachoNro
     * @return Vdespachoodexp
     */
    
public function setDespachoNro($despachoNro)
    {
        
$this->despachoNro $despachoNro;
    
        return 
$this;
    }

    
/**
     * Get despachoNro
     *
     * @return string 
     */
    
public function getDespachoNro()
    {
        return 
$this->despachoNro;
    }

/**
     * Set expXDespacho
     *
     * @param string $expXDespacho
     * @return Vdespachoodexp
     */
    
public function setExpXDespacho($expXDespacho)
    {
        
$this->expXDespacho $expXDespacho;
    
        return 
$this;
    }

    
/**
     * Get expXDespacho
     *
     * @return string 
     */
    
public function getExpXDespacho()
    {
        return 
$this->expXDespacho;
    }

Y en el controlador, intento ir a mostrar todo de la forma estándar:

Código PHP:

public function indexAction()
    {
        
$em $this->getDoctrine()->getManager("comision");

        
$entities $em->getRepository('ProyectoComisionBundle:Vdespachoodexp')->findAll();

        return 
$this->render('ProyectoComisionBundle:Vdespachoodexp:index.html.twig', array(
            
'entities' => $entities,
        ));
    } 
Cuando lo ejecuto, me da el siguiente error:

An exception occurred while executing 'SELECT t0.id AS ID1, t0.DespachoNro AS DESPACHONRO2,[...] EXPXDESPACHO8 FROM Vdespachoodexp t0':

ORA-00904: "T0"."EXPXDESPACHO": identificador no válido

Resumí los otros campos porque el que me interesa es el que da error. Alguna idea? Yo veo todo muy normal.

Cabe aclarar que en la DB es una Vista y sus campos están denominados como se declaró en el name la entidad, en este caso EXP_X_DESPACHO

Muchas gracias de antemano.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 25/03/2014, 15:43
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Alguien le ve algo raro a esta entity?

Dudo que el problema este en la entidad, ten en cuenta estas con oracle, no es el driver mas utilizado, y segundo estas atacando una vista y no una tabla, osea estas haciendo dos cosas no del todo comunes, te sugiero que obtengas el raw sql(Query::getSQL) y compruebes que es correcto.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 26/03/2014, 11:02
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Alguien le ve algo raro a esta entity?

Ese es justamente el tema. Al parecer, no está "traduciendo" bien la consulta entre lo que declaro en @ORM\Column(name="EXP_X_DESPACHO", type="string", length=255) ya que en el error, y en la consulta que envía

Código:
Shrink query
 SELECT 
  t0.id AS ID1, 
  t0.DespachoNro AS DESPACHONRO2, 
  t0.DictamenDesp AS DICTAMENDESP3, 
  t0.DespachoDocumento AS DESPACHODOCUMENTO4, 
  t0.TipoOd AS TIPOOD5, 
  t0.OdNumero AS ODNUMERO6, 
  t0.DictamenOd AS DICTAMENOD7, 
  t0.ExpXDespacho AS EXPXDESPACHO8 
FROM 
  Vdespachoodexp t0
Envía los nombres de las columnas sin los guiones delcarados en el atributo name.

A alguien le ha pasado algo similar? Suelo utilizar consultas a vistas sin ningún inconveniente en el mismo proyecto.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #4 (permalink)  
Antiguo 26/03/2014, 11:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Alguien le ve algo raro a esta entity?

Lo que muestras es el SQL o DQL ?, porque veo propiedades no campos de tablas, como obtienes el SQL ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 26/03/2014, 11:28
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Alguien le ve algo raro a esta entity?

Justamente, lo que muestro es el DQL que, en los casos que funciona correctamente, reemplaza los nombres de las variables de la entity con la denominación en la tabla.

Correctamente, esto debería verse como:
t0.ExpXDespacho AS EXP_X_DESPACHO8 y de esa forma funcionaría.
Lo que observo en este caso, es que está omitiendo todos los guiones en los nombres de los campos generando un SQL incorrecto. No muestro el SQL porque ya desde aquí se ve que está enviando mal los parámetros para generarlo.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #6 (permalink)  
Antiguo 26/03/2014, 12:02
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Alguien le ve algo raro a esta entity?

Revisando el resto de la aplicación, me di cuenta que lo que está buscando para referencia de la entidad es el archivo .orm.yml

No se muy bien qué hice diferente al generar la entidad, pero ahora solicita en todas que exista el archivo correspondiente .orm.yml en Resources/Config.

Según pude ver, esto está configurado en DependencyInjection/ProyectoComisionExtension.php

Mi idea ahora, es encontrar dónde es llamado este archivo para modificar y continuar manejando la definición de entidades directamente en el archivo .php de la entidad sin necesidad de los .orm.yml

Me desconcierta porque no sé qué fue lo que hice de diferente al generar al entidad que generó este conflicto, pero así están las cosas en mi código

En cuanto lo solucione, comento.


Muchas gracias!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #7 (permalink)  
Antiguo 26/03/2014, 12:13
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Alguien le ve algo raro a esta entity?

El DQL es a nivel de modelo, relaciona a nivel de model y no de BBDD, el parser es quien se encarga de transformar el DQL en el SQL, te vuelvo a repetir lo mismo, haz un Query::getSQL para ver el SQL que esta generando.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 26/03/2014, 12:16
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Alguien le ve algo raro a esta entity?

Gracias, ya en otra ocasión tal vez sea necesario. Por ahora, el problema estaba en que no estaba tomando la tabla y nombres de las columnas de lo definido en la entidad, sino de lo que figuraba en el correspondiente archivo .orm.yml.

Estoy viendo cómo cambio esta configuración porque las entidades anteriores no trabajaban así en mi proyecto y ahora me pide que coloque estos archivos para todas.
Ese era el origen del problema, que la definición de la tabla y sus columnas decía otra cosa en el mencionado archivo.
Cambiando ahí, funcionó todo, pero no tengo generados esos archivos para todas las entidades y como son dos (las ultimas que generé) las que están pidiendo esto, ganaron por mayoría las otras y veré de dejar la configuración anterior :D
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #9 (permalink)  
Antiguo 26/03/2014, 12:18
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Alguien le ve algo raro a esta entity?

Lo diferente seguramente es que cuando creaste la entidad elegiste como mapeo yml, elimina los archivos en Resources/config/doctrine(previo backup...), limpia la cache y deberia leer la metadata del docblock directamente.

E independientemente del problema te sugiero investigues un poco sobre como internamente doctrine transforma el DQL en SQL, se puede aprender mucho ;)
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 26/03/2014, 12:38
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Alguien le ve algo raro a esta entity?

Siiii!!!!!!

Gracias! Era eso, ya quedó solucionado
__________________
Why can't we not be sober?
www.partitorium.com.ar

Etiquetas: raro
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 10:54.