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)