jueves, 12 de junio de 2014

Join Sin Relación con Doctrine 2.3

A partir de la versión 2.3 de Doctrine se puede hacer un JOIN sin que exista una relación definida entre las entidades.

Por ejemplo, si se tienen las siguientes tablas Competencias y Estadisticas, en que la tabla Estadísticas es sólo una tabla temporal y que tenemos definida como una entidad para manejarla en Symdony2, pero no necesariamente necesitamos definir una asociacion hacia competencias, la consulta se realizaría de la siguiente manera.



Con DQL

<?php

class EstadisticasRepository {
    $dql = "SELECT c,e FROM AdminBundle:Estadisticas
        JOIN AdminBundle:Competencias c WITH e.competencia = c.id";

    ...
}

Con QueryBuilder

<?php
...
use Doctrine\ORM\Query\Expr\Join;

class EstadisticasRepositorio {
    $qb = $this->createQueryBuilder('e');
    $qb->select('e, c')
        ->innerJoin("BackendBundle:Competencias",
            'c',
            Join::WITH,
            $qb->expr()->eq('s.competencia', 'c.id')
    );

    ...
}
Referencias.
Blog Showmetcode
Documentación Doctrine

No hay comentarios.:

Publicar un comentario