تأمر على حقل غير مرتبط في العقيدة

0

لدي جدولين قاعدة بيانات ، 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;
}

1 إجابة

2
افضل جواب

من الممكن القيام بذلك في sql (حتى مع العقيدة).
من الممكن أيضًا التعامل مع هذا في php.
عليك اختيار حل واحد سهل عليك.

في sql / doctrine ، سيتعين عليك الانضمام إلى orderDetails ، وتجميعها حسب order.id ، وتحديد order + استخدام الدالة SUM (orderDetail.id) - order.id كمجموع فرعي ، وأخيرًا ترتيب مجاميع فرعي

في php ، سيتعين عليك فرز مجموعة الكائنات حسب أسلوبك الفرعي ، راجع هذا المنشور حول كيفية القيام بذلك: https://stackoverflow.com/a/4282423/6324627

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام