Doctrine 2 ORM - 在oneToMany关系中搜索(QueryBuilder)

时间:2015-08-02 15:31:02

标签: php doctrine-orm

我正在尝试解决以下问题。

我有OrderEntity,OrderEntity是与OrderStatusHistory(OneToMany)的关系。

<application>

OrderStatusHistory实体:

/**
 * @ORM\OneToMany(targetEntity="OrderStatusHistory", mappedBy="order")
 */
protected $statuses;

现在我需要选择订单,其中最后一个状态 ID为4.我尝试了许多QB版本,但其中任何一个都不起作用。

1 个答案:

答案 0 :(得分:1)

有几种方法,您可以加入该表并使用WITH,或者您可以使用WHERE,或者您可以使用该ID。以下是一些例子:

使用DQL:

$dql = "SELECT o
FROM Order o
WHERE o.orderStatus = 4"

$dql = "SELECT o
FROM Order o
INNER JOIN o.orderStatus orderStatus
WITH orderStatus.id = 4"

OR:

$dql = "SELECT o
FROM Order o
INNER JOIN o.orderStatus orderStatus
WHERE orderStatus.id = 4"

或查询生成器:

$queryBuilder->select('o')
             ->from('Order', 'o')
             ->where('o.orderStatus = 4');