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:
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í: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;
Código:
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.->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))
;
Viendo el profile la SQL que realiza es ésta:
Código:
Alguien me puede echar una mano?, ni los de stackoverflow me han sabido ayudar. 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)


