Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/09/2011, 01:15
Avatar de Uncontroled_Duck
Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años
Puntos: 261
Respuesta: Intentando entender DQL

Hola masterpuppet,

Entendido lo de el alias de "a"

Abajo dejo los Entities y la consulta que estoy probando:

Si pongo el "AS" antes de el alias del Entity me da el error:
Código:
1) Entities\Entity\ElementsTest::test_SelectElementsDelegations
Undefined index: Entities\Entity\Users
Y si pongo la consulta sin el "AS" para los alias me da el error:
Código:
1) Entities\Entity\ElementsTest::test_SelectElementsDelegations
Doctrine\ORM\Query\QueryException: [Syntax Error] line 0, col 89: 
Error: Expected Doctrine\ORM\Query\Lexer::T_DOT, got 'u'
Hasta que no trabaje un poco con las consultas (si consigo que funcionen), los errores me suenan a chino, en fin... poco a poco.

La consulta:
Código PHP:
public function test_SelectElementsDelegations()
{
    
$em $this->doctrineContainer->getEntityManager();
    
$dql 'SELECT d.name, u.firstName '
          
.'FROM Entities\Entity\Delegations AS d '
          
.'JOIN Entities\Entity\Users AS u';
    
$query $em->createQuery($dql);
    
$element $query->getResult();

    foreach( 
$element as $key => $value )
    {
        echo 
$element[$key]['name'] . ' ' $element[$key]['firstName'] . "\n";
    }

El Entity Delegations
Código PHP:
declare(ENCODING 'utf-8');
//Lo pongo comentado por que no salen las barras invertidas
namespace /*Entities\Entity*/;

/**
 * @Entity(repositoryClass="Entities\Entity\Repository\DelegationsRepository")
 * @Table(name="data_delegations")
 */
class Delegations
{
    
/**
     * @Column(name="del_id", type="integer", length=11, nullable=false)
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     */
    
private $id;

    
/**
     * @Column(name="del_name", type="string", length=255, nullable=false)
     */
    
private $name;

    
/**
     * 
     * @param \Doctrine\Common\Collections\Collection $users
     * 
     * @OneToMany(targetEntity="Users",mappedBy="delegations", cascade={"persist","remove"})
     */
    
private $users;

    
/** 
     *
     */
    
public function __get($property)
    {
        return 
$this->$property;
    }
    
    public function 
__set($property$value)
    {
        
$this->$property $value;
    }

El Entity Users
Código PHP:
declare(ENCODING 'utf-8');
//Lo pongo comentado por que no salen las barras invertidas
namespace /*Entities\Entity*/;

/**
 * @Entity(repositoryClass="Entities\Entity\Repository\UsersRepository")
 * @Table(name="data_users")
 */
class Users
{
    
/**
     * @Column(name="use_id", type="integer", length=11, nullable=false)
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     */
    
private $id;

    
/**
     * @Column(name="del_id", type="integer", length=11, nullable=false)
     */
    
private $delId;

    
/**
     * @Column(name="use_first_name", type="string", length=100, nullable=false)
     */
    
private $firstName;

    
/**
     * @var Delegations
     * 
     * @ManyToOne(targetEntity="Delegations")
     * @JoinColumns({
     *     @JoinColumn(name="del_id", referencedColumnName="del_id")
     * })
     */
    
private $delegations;

    
/** 
     *
     */
    
public function __get($property)
    {
        return 
$this->$property;
    }
    
    public function 
__set($property$value)
    {
        
$this->$property $value;
    }

Gracias por todo, un saludo.
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight