Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2013, 00:57
cmaciasg
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Cómo hacer un join de dos entidades relacionadas many to many

Hola a todos, os cuetno mi problema, creo que es una tontería pero se me escapa algo.
Tengo dos entidades relacionadas many to many, account.php y user.php, os las pego.

Código:
class Account
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
	
	
  /**
   * Many-To-Many, Unidirectional
   *
   * @var ArrayCollection $idusr
   *
   * @ORM\ManyToMany(targetEntity="\FEB\UserBundle\Entity\User", inversedBy="account")
   */
    private $idusr;


Código:
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
	
	/**
	* @var \Doctrine\Common\Collections\ArrayCollection $account
	*
	* @ORM\ManyToMany(targetEntity="\FEB\UserBundle\Entity\Account", mappedBy="idusr")
	*/
	protected $account;
Ahora, en el type de otro bundle quiero sacar en un dropdown las accounts ($account) con un determinado id de usuario ($idusr), haciendo un join de la entidad account y user. Lo hago así:

Código:
->add('idaccount', 'entity', array(
					'class' =>    'FEBUserBundle:Account',
					'property' => 'username',
	 			        'query_builder' => function(EntityRepository $er ) use ($options) {
					return $er->createQueryBuilder('a')
							  ->leftJoin('\FEB\UserBundle\Entity\User', 'u')
							  ->where('u.id = :id')
							  ->setParameter('id', $options['pepe']);
						},
					'empty_value' => 'Selecciona account',
					'multiple' => false))												
					;
El problema es que no hace el join, le ponga el idusr que le pona, siempre me saca todas las accounts de la tabla account, no el join.

Viendo el profile la SQL que realiza es ésta:

Código:
SELECT a0_.id AS id0, a0_.tipoaccount AS tipoaccount1, a0_.idusrsm AS idusrsm2, a0_.username AS username3, a0_.token AS token4, a0_.secrettoken AS secrettoken5 FROM Account a0_ LEFT JOIN feb_user f1_ ON (f1_.id = 1)
Alguien me puede echar una mano?, ni los de stackoverflow me han sabido ayudar.

Última edición por cmaciasg; 24/09/2013 a las 00:59 Razón: Error de typo