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

ORM planteamiento

Estas en el tema de ORM planteamiento en el foro de Symfony en Foros del Web. Hola, soy relativamente nuevo con symfony2 y estoy atascado en un problema que me tiene desesperado. He seguido el manual y al parecer hago todo ...
  #1 (permalink)  
Antiguo 09/06/2012, 05:42
 
Fecha de Ingreso: junio-2012
Mensajes: 1
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta ORM planteamiento

Hola, soy relativamente nuevo con symfony2 y estoy atascado en un problema que me tiene desesperado. He seguido el manual y al parecer hago todo bien, pero me salta un error y no se si el problema de la query o de las relaciones.

Tengo una tabla Discover la cual puede tener varios Article. Es decir un articulo puede ser descubierto varias veces (relacion many to one).

El codigo es el siguiente:


<?php

namespace IT\bagBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

use Doctrine\Common\Collections\ArrayCollection;
use IT\bagBundle\Entity\Discover;
/**
* IT\bagBundle\Entity\Article
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="IT\bagBundle\Entity\A rticleRepository")
*/
class Article
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*
*/
private $id;

/**
* @ORM\OneToMany(targetEntity="Discover", mappedBy="Article")
*/
protected $discovers;

public function __construct()
{
$this->discovers = new ArrayCollection();
}



................
<?php

namespace IT\bagBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use IT\bagBundle\Entity\Article;
/**
* IT\bagBundle\Entity\Discover
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="IT\bagBundle\Entity\D iscoverRepository")
*/
class Discover
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var integer $articleId
*
* @ORM\Column(name="articleId", type="integer")
* @ORM\ManyToOne(targetEntity="Article", inversedBy="discovers")
* @ORM\JoinColumn(name="id", referencedColumnName="id")
*/
private $articleId;



.......

Y tengo la siguiente query:

class ArticleRepository extends EntityRepository
{
public function findArticleById(1)
{
return $this->getEntityManager()->createQuery('SELECT a FROM
bagBundle:Article a JOIN a.discovers d
WHERE d.articleId = 1')->execute();
}
}


Y obtengo el siguiente error:

Notice: Undefined index: Article in /Applications/MAMP/htdocs/bag/vendor/doctrine/lib/Doctrine/ORM/Query/SqlWalker.php line 747



El problema (como soy principiante) es que no se donde esta el fallo, si en la query el las relaciones o en el planteamiento

Alguna ayuda?? muchas gracias
  #2 (permalink)  
Antiguo 09/06/2012, 07:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: ORM planteamiento

Que tal nasy,

Antes que nada bienvenido al FdW, ahora en relación a tu pregunta, para el DQL utiliza la nomenclatura de Doctrine, algo asi:

Código PHP:
Ver original
  1. $dql = 'SELECT a FROM '
  2.      . 'IT\bagBundle\Entity\Article a '
  3.      . 'JOIN a.discovers d '
  4.      . 'WHERE a.id = 1';
  5. return $this->getEntityManager()->createQuery($dql)->getResult(); // o si es un único elemento getSingleResult()

y te sugiero que sigas las convenciones de Symfony a la hora de nombrar tu bundle y por consiguiente tus clases, debería ser Upper Camel Case.

Bundle
bagBundle mal
BagBundle bien

Class
IT\bagBundle\Entity\Article mal
IT\BagBundle\Entity\Article bien


Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: symfony2
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 14:12.