Symfony queryBuilder: too many queries
Explicitly create the join in your QueryBuilder, and select both the user and allowed users.
UPDATE
You must also join and select your user profile and user settings OneToOne relations because Doctrine automatically retrieves OneToOne relations them any time you fetch the User entity.
The Doctrine documentation talks about why it has to perform an extra query when fetching the inverse side of a one-to-one relation.
->add('allowedUsers', EntityType::class, [ 'class' => 'AppBundle\Entity\User', 'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('u') ->select('u, au, up, us') ->join('u.allowedUsers', 'au') ->join('u.userProfile', 'up') ->join('u.userSettings', 'us') ->orderBy('u.username', 'ASC') ; }, 'label' => 'Allowed users', 'required' => false, 'multiple' => true])
If you don't have queries to your "entity" that don't need to fetch allowedUsers
the simplest way would be to explicitly define fetch mode as EAGER
in the field's annotations:
/** * @ORM\ManyToMany(targetEntity="User", fetch="EAGER") * @ORM\JoinTable( * name="offer_allowedusers", * joinColumns={ * @ORM\JoinColumn(name="offer_id", referencedColumnName="id", onDelete="CASCADE") * }, * inverseJoinColumns={ * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE") * } * ) */private $allowedUsers;