【Symfony】DoctrineのQueryBuilderでWHERE句のAND・OR組み合わせ

<?php

// SELECT FROM product
// JOIN category ON product.category_id = category.id
// WHERE category.name LIKE '%カテゴリ名%'
// AND (product.name LIKE '%商品名%' OR product.price < 商品価格);

$qb->select('p')
    ->from('AppBundle:Product', 'p')
    ->join('p.category', 'c')
    ->where('c.name like :categoryName')
    ->andWhere($qb->expr()->orX(
        $qb->expr()->like('p.name', ':productName'),
        $qb->expr()->lt('p.price', ':price')
    ))
    ->setParameter('categoryName', '%'.$categoryName.'%')
    ->setParameter('productName', '%'.$productName.'%')
    ->setParameter('price', $price)
;

The QueryBuilder - Doctrine - PHP Database Tools