如何在同一查询中获取实体和计数?



我创建了以下存储库和方法。该方法执行您希望它执行的操作,但一件事除外。它不能同时返回->select('ol')->select('count(ol.product) as totalProducts')。一旦我输入->select('ol')它就会忽略计数。

class OrderLineRepository
{
// ...
public function getOpenOrders()
{
$qb = $this->createQueryBuilder('ol');
$orders = $qb
->select('count(ol.product) as totalProducts')
->select('ol')
->where('BIT_AND(ol.flags, 3) = 2')
->groupBy('ol.orderId')
->setMaxResults(100)
->getQuery()
->getResult()
;
return $orders;
}
// ...
}

我仍处于掌握symfony的早期阶段,这可能是一个相当愚蠢的问题。但这仍然是我目前面临的一个问题。有人可以帮助我吗?

更新

在RiggsFolly的帮助下,我现在通过使用->addSelect(...)而不是->select(...)得到以下结果。

array:10 [
// ...
array:2 [
0 => OrderLine {
id: 8068005
product: Product {#1503 ▶}
supplier: Supplier {#1552 ▶}
reference: Reference {#1528 ▶}
}
"products" => "3"
]
// ...
]

理想情况下,我想这样得到它:

array:10 [
// ...
array:2 [
id: 8068005
product: Product {#1503 ▶}
supplier: Supplier {#1552 ▶}
reference: Reference {#1528 ▶}
"products" => "3"
]
// ...
]

我不知道它与OrderLine和产品的关系如何;但也许您可以在它之间创建数据库关系,这样您将获得与您的OrderLine相关的一系列产品。

最后,要获得产品数量:

$productsNumber = count($orderLine->getProducts());  

更新

在这种情况下,产品总数将与订单行总数相同,对吗?

所以......在我看来,totalproducts不是OrderLine 属性;它不应该是 OrderLine 对象的一部分,相反,你可以计算 Doctrine 检索到的 OrderLines 对象,它将是你的 totalProduct。

再进一步看,您还可以创建一个与OrderLine对象相关的Order实体(一对多(。然后,您可以使用 Doctrine 查询订单实体,并计算Order实体的OrderLines属性,该属性将与产品总数相同。

相关内容

  • 没有找到相关文章

最新更新