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方法对对象数组进行排序,请参阅以下文章:
难道没有更简单的方法吗?我遇到的问题是,我想使用这个查询对订单的其他属性进行排序,并返回搜索结果。我在我的问题中添加了这个问题,以使其易于理解。在我的表中,我已经有了所有属性(包括小计)。只有小计是不可排序的。难道没有更简单的方法吗?我遇到的问题是,我想使用这个查询对订单的其他属性进行排序,并返回搜索结果。我在我的问题中添加了这个问题,以使其易于理解。在我的表中,我已经有了所有属性(包括小计)。只有小计不可排序。