queryBuilder使用innerJoin创建sql

时间:2016-10-12 16:37:44

标签: sql symfony

我无法从2个表中进行真正的查询。

   /**
 * Order
 *
 * @ORM\Table(name="order_work")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\OrderWorkRepository")
 */
class OrderWork
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Client", cascade={"persist"})
     * @ORM\JoinColumn(name="client_id", referencedColumnName="id")
     */
    private $client;

    /**
     * @var string
     *
     * @ORM\Column(name="orderNumber", type="string", length=255)
     */
    private $orderNumber;

和客户端实体有id,name,surname参数:

我想通过订单列进行搜索,并通过客户端参数来查询我的查询方式?)

仅对订单有效:

$queryBuilder = $this->createQueryBuilder('c')
        ->orWhere('c.orderNumber LIKE :term')
        ->orWhere('c.device LIKE :term')
        ->setParameter('term', '%'.$term.'%');

1 个答案:

答案 0 :(得分:1)

你必须使用连接进行查询,这可以使用querybuilder,但我喜欢使用DQL。

public function findOrdersOnClientName($searchTerm)
{
     return $this->getEntityManager()->createQuery(
        'SELECT o, c FROM AppBundle:OrderWork o
        JOIN o.client c
        WHERE c.name LIKE :term'
    )->setParameter('term, '%'. $searchTerm . '%')->getResult();
}