Doctrine QueryBuilder の join の書き方めも(WITHなし・あり)

product テーブル

  • id
  • category_id
  • name

category テーブル

  • id
  • name
<?php
//...
$em->createQueryBuilder()
    ->select('p')
    ->from('AppBundle:Product', 'p')
    ->join('p.category', 'c')
    ->where('c.name = :name')
    ->setParameter('name', $name)
    ->orderBy('p.id', 'DESC')
;

order テーブル

  • id
  • total

order_item テーブル

  • id
  • order_id
  • price
<?php
//...
$em->createQueryBuilder()
    ->select('o')
    ->from('AppBundle:Order', 'o')
    ->join('AppBundle:OrderItem', 'oi', 'WITH', 'oi.order = o.id')
    ->where('oi.price > :price')
    ->andWhere('o.id > :id')
    ->setParameter('price', $price)
    ->setParameter('id', $id)
    ->orderBy('o.id', 'DESC')
;