Search code examples
symfonydoctrine-ormwhere-in

symfony doctrine query builder where (variable in arraycollection)


I want to get Characteristic by category.

I got this error

[Syntax Error] line 0, col 95: Error: Expected Doctrine\ORM\Query\Lexer::T_OPEN_PARENTHESIS, got 'categories'

error screenshot

Relation in Characteristic Entity:

/**
 * @ORM\ManyToMany(targetEntity="App\Entity\Category", inversedBy="characteristics")
 */
private $categories;

My query builder function:

$this->createQueryBuilder('characteristic')
 ->leftJoin('characteristic.categories', 'categories')
 ->andWhere(':category in categories')
 ->setParameter('category', $category)
 ->getQuery()
 ->getOneOrNullResult();

Solution

  • Thanks for commenting.

    I solved that problem by using MEMBER OF statement.

    Here is the code:

    $this->createQueryBuilder('characteristic')
     ->andWhere(":category MEMBER OF characteristic.categories")
     ->setParameter('category', $category)
     ->getQuery()
     ->getOneOrNullResult()
            ;