Php 条令学中非关联领域的秩序

Php 条令学中非关联领域的秩序,php,symfony,doctrine,Php,Symfony,Doctrine,我有两个数据库表,orders和orderdetails。产品的价格在单个订单详细信息中设置。在我的order类中,我计算小计金额(计算字段),如下所示: Order.php private $subTotalAmount; public function calculateSubTotalAmount(){ $subtotal = 0; foreach ($this->getOrderDetails() as $detail) { $subtotal

我有两个数据库表,
orders
orderdetails
。产品的价格在单个订单详细信息中设置。在我的order类中,我计算小计金额(计算字段),如下所示:

Order.php

private $subTotalAmount;

public function calculateSubTotalAmount(){

    $subtotal = 0;
    foreach ($this->getOrderDetails() as $detail) {
        $subtotal = $subtotal + $detail->getPrice();
    }
    $subtotal = $subtotal -$this->getDiscount();
    return $subtotal;
}

    public function getSubTotalAmount()
{
    $this->subTotalAmount = $this->calculateSubTotalAmount();
    return $this->subTotalAmount;
}
我希望能够按此字段进行排序,但鉴于此字段不相关,当我尝试时,我会得到错误:

[语义错误]第0行第135列“小计金额”附近:错误: 类App\Entity\Order没有名为的字段或关联 小计金额

有没有办法按此字段订购

我想在中实现的查询是:

public function searchAndSort($term, $sortAttribute, $sortOrder)
{
    $qb = $this->createQueryBuilder('po');
    $qb->andWhere('po.invoiceNumber LIKE :term or u.email LIKE :term')
        ->LeftJoin('po.orderedBy',  'u')
        ->setParameter('term', '%'.$term.'%')
        ->orderBy($sortAttribute, $sortOrder)
        ->getQuery()->getResult();
    return $qb;
}

在sql中实现这一点是可能的(即使使用条令)。
也可以用php处理此问题。
你必须选择一个对你来说容易的解决方案

在sql/doctrine中,您必须加入orderDetails,按order.id分组,选择order+使用函数SUM(orderDetail.id)-order.id作为小计,最后选择orderby小计

在php中,您必须按照subtotal方法对对象数组进行排序,请参阅以下文章:

在sql中实现这一点是可能的(即使有条令)。
也可以用php处理此问题。
你必须选择一个对你来说容易的解决方案

在sql/doctrine中,您必须加入orderDetails,按order.id分组,选择order+使用函数SUM(orderDetail.id)-order.id作为小计,最后选择orderby小计

在php中,您必须按照subtotal方法对对象数组进行排序,请参阅以下文章:

难道没有更简单的方法吗?我遇到的问题是,我想使用这个查询对订单的其他属性进行排序,并返回搜索结果。我在我的问题中添加了这个问题,以使其易于理解。在我的表中,我已经有了所有属性(包括小计)。只有小计是不可排序的。难道没有更简单的方法吗?我遇到的问题是,我想使用这个查询对订单的其他属性进行排序,并返回搜索结果。我在我的问题中添加了这个问题,以使其易于理解。在我的表中,我已经有了所有属性(包括小计)。只有小计不可排序。