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

[SOLUCIONADO] Problema con BiGINT

Estas en el tema de Problema con BiGINT en el foro de Symfony en Foros del Web. Buenas por acá! Tengo un problema con doctrine o quizás sea un error de capa 8. A la hora de dar update, o insertar desde ...
  #1 (permalink)  
Antiguo 16/12/2014, 15:44
 
Fecha de Ingreso: enero-2013
Mensajes: 11
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Problema con BiGINT

Buenas por acá!

Tengo un problema con doctrine o quizás sea un error de capa 8.

A la hora de dar update, o insertar desde la app, el campo toma 4bytes con otros numeros. Si lo actualizo desde el manejador de base de datos todo funciona correctamente, estoy en arquitectura 64bits.

Entity:
Código PHP:
/**
     * @var bigint
     * @ORM\Column(name="codigo", type="bigint", nullable=false)
     */
     
private $codigo;

/**
     * Set codigo
     *
     * @param bigint $codigo
     * @return Farmaco
     */
    
public function setCodigo($codigo)
    {
        
$this->codigo $codigo;

        return 
$this;
    }

    
/**
     * Get codigo
     *
     * @return bigint 
     */
    
public function getCodigo()
    {
        return 
$this->codigo;
    } 

Campo en base de datos (phpmyadmin)

Nulo Predeterminado
2 codigo bigint(20) No Ninguna







Aquí dejo un thread parecido al mío
https://github.com/zfcampus/zf-apigility-doctrine/issues/37


Espero me puedan ayudar.


Saludos
  #2 (permalink)  
Antiguo 18/12/2014, 08:22
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Problema con BiGINT

También trabajo en arquitectura de 64 bits y no tengo problemas así que me temo que necesitas ver desde otra perspectiva tu problema.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 18/12/2014, 10:41
 
Fecha de Ingreso: enero-2013
Mensajes: 11
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Problema con BiGINT

He realizado muchas cosas para resolver, pero todo parece decir que el problema es doctrine o algún error de código, también que me falte alguna función.

En la entidad no veo nada malo, ¿Qué crees que esté mal en términos generales?
  #4 (permalink)  
Antiguo 19/12/2014, 11:22
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Problema con BiGINT

Por el comportamiento parece que se esta truncando con enteros mayores a 4 bytes. Y esto puede ser por que no le estas diciendo a Mysql que quieres solo valores positivos.
Código PHP:
Ver original
  1. /**
  2.      * @var bigint
  3.      * @ORM\Column(name="codigo", type="bigint", options={"unsigned" = true})
  4.      */
  5.      private $codigo;

Crea una prueba de unidad y persiste la entidad pasando diferentes enteros incluyendo el limite: http://dev.mysql.com/doc/refman/5.0/...ger-types.html
Si todo esta bien, entonces revisa tu formulario.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 19/12/2014, 16:22
 
Fecha de Ingreso: enero-2013
Mensajes: 11
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Problema con BiGINT

El problema lo tenía en las anotaciones a la hora de setear el parametro. Sin embargo gracias por ayudar.

Lo dejo por si le sirve a alguien.


Código PHP:
/**
     * Set codigo
     *
     * @param bigint $codigo
     * @return Farmaco
     */
    
public function setCodigo($codigo)
    {
        
$this->codigo $codigo;

        return 
$this;
    } 
a

Código PHP:
/**
     * Set codigo
     *
     * @param bigint 
     * @return Farmaco
     */
    
public function setCodigo($codigo)
    {
        
$this->codigo $codigo;

        return 
$this;
    } 

Saludos

Etiquetas: 64bits, doctrine, integer, type
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 07:10.