Search code examples
phpdoctrine-ormdql

Doctrine 2 DQL: Cannot reuse named parameter?


I find that I cannot do something like below, notice ':user' is used twice

$query = $em->createQuery('select p from Application\Models\Project p
                           WHERE  p.owner = :user
                           OR :user MEMBER OF p.collaborators');
$query->setParameter('user', $user);

I get the error "array_combine(): Both parameters should have an equal number of elements"

I can fix the problem by doing something like below instead

$query = $em->createQuery('select p from Application\Models\Project p
                           WHERE  p.owner = :user
                           OR :user1 MEMBER OF p.collaborators');

Solution

  • if you use ?X you can do that.

    $query = $em->createQuery('select p from Application\Models\Project p
                               WHERE  p.owner = ?0
                               OR ?0 MEMBER OF p.collaborators');
    $query->setParameters(array($user));