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

Juntando datos con doctrine.

Estas en el tema de Juntando datos con doctrine. en el foro de Symfony en Foros del Web. Hola, buenos dias, les cuento sigo probandp con symfony y estoy en una parte donde no encuentro que estoy haciendo mal, pero me marca un ...
  #1 (permalink)  
Antiguo 18/06/2012, 11:11
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Juntando datos con doctrine.

Hola, buenos dias, les cuento sigo probandp con symfony y estoy en una parte donde no encuentro que estoy haciendo mal, pero me marca un error.

Lo que quiero hacer es, juntar los datos de una fila, siempre y cuando los valores de una determinada columna se respeten.

(lo que comunmente en sql seria where columna=valor)

Código PHP:
$articulos['title'] = $em->getRepository('DeGualeguaychuAvisosBundle:Categorias')->findByNombre($categoria)->getId(); 

Error:
Código:
Fatal error: Call to a member function getId() on a non-object in C:\www\src\DeGualeguaychu\AvisosBundle\Controller\DefaultController.php on line 47

Se que el valor que llega desde $categoria es correcto.

Código PHP:
<?php

namespace DeGualeguaychuAvisosBundleEntity
;

use 
DoctrineORMMapping as ORM;

/**
 * DeGualeguaychu\AvisosBundle\Entity\Categorias
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Categorias
{
    
/**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    
private $id;

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

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

    
/**
     * Set id
     *
     * @param integer $id
     */
    
public function setId($id)
    {
        
$this->id $id;
    }

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

    
/**
     * Set nombre
     *
     * @param string $nombre
     */
    
public function setNombre($nombre)
    {
        
$this->nombre $nombre;
    }

}
La verdad no se en que me puedo estar equivocando, solo quiero que me devuelva el numero que corresponde a esa categoria.

Mi tabla:
Código:
CREATE TABLE IF NOT EXISTS `categorias` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=100 ;

INSERT INTO `categorias` (`id`, `nombre`) VALUES
(1, 'Automotores'),
(2, 'Inmuebles'),
(3, 'Comunidad'),
(4, 'Gratis'),
(5, 'Electrodomesticos'),
(6, 'Muebles'),
(7, 'Telefonia Celular'),
(8, 'Indumentaria'),
(9, 'Servicios'),
(10, 'Empleo'),
(99, 'Todos');


Otra consulta, es seguro hacer la consulta directamente, analizar antes $categoria (que viene juntada desde el ruting), ya que doctrine ya save que es string?
  #2 (permalink)  
Antiguo 18/06/2012, 11:24
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Juntando datos con doctrine.

Comprueba el valor de $categoria(mayúsculas, minúsculas, espacios) y ten en cuenta que estas haciendo un findBy, te va a devolver una colección con lo cual el getId va fallar tambien, si quieres un solo registro puedes utilizar findOneBy.

Con respecto a si es seguro, Doctrine debajo utiliza PDO, así que todo lo que pases por los finders se va a escapar mas adelante, de todas formas nunca esta de mas filtrar y validar los datos de entrada.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 18/06/2012, 20:39
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Juntando datos con doctrine.

Exelente, muchas gracias, encontre el error.

Efectivamente como decias, findbynombre(), me devuelve un array de indice 0,1,... segun la cantidad de registros que encuentra, si encuentra uno solo el indice es 0. asi que si quiero juntar el id del mismo seria $var[0]->getId();

Ahora me surgio otro problema, pero creare otro post para no cambiar el tema.

Muchas Gracias.

Etiquetas: class, php
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 21:58.