لدي جدولين قاعدة بيانات ، orders
و orderdetails
. يتم تحديد سعر المنتج في تفاصيل طلب واحد. في فئة طلبي ، أحسب subTotalAmount
(حقل محسوب) مثل هذا:
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;
}
أود أن أكون قادراً على الطلب حسب هذا المجال ، ولكن بالنظر إلى أنه غير مرتبط ، عندما أحاول الحصول على الخطأ:
[Semantical Error] line 0, col 135 near 'subTotalAmount ': Error: Class App\Entity\Order has no field or association named subTotalAmount
هل هناك طريقة يمكن من خلالها الطلب حسب هذا المجال؟
الاستعلام الذي أرغب في تنفيذه هو:
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;
}