簡體   English   中英

Doctrine 1.2 用 DQL 計算 oneToMany 關系的總和

[英]Doctrine 1.2 calculating the sum of oneToMany relations with DQL

使用 doctrine 1.2 我正在嘗試執行以下操作:

假設我有一個 model 工作,它有很多發票。

在我的發票 model 中,我有一個 DQL 事件偵聽器,例如

public function preDqlSelect(Doctrine_Event $event)
{
    $q = $event->getQuery();
    $q->addSelect('(hours * local_rate) as invoice_payout');
    $q->addSelect('(hours * global_rate) as invoice_bill');
    $q->addSelect('((hours * global_rate) - (hours * local_rate)) as invoice_profit');
}

效果很好,還要注意以上是根據需要計算的,因為根據用戶的要求,它需要以不同的方式計算。

我遇到的問題是嘗試執行以下操作:

Select Job 和 foreach job->invoices SUM('invoice_payout) 作為 job_payout,SUM('invoice_bill) 作為 job_bill,SUM('invoice_profit') 作為 job_profit。

我知道上面的語法絕不是正確的,但這是我可以解釋我所追求的最好的方式。

“invoice_payout”和“invoice_bill”實際上並不存在於表中。 您需要使用表中的列。 嘗試這個:

public function preDqlSelect(Doctrine_Event $event)
{
    $q = $event->getQuery();
    $q->addSelect('SUM(hours * local_rate) as job_payout');
    $q->addSelect('SUM(hours * global_rate) as job_bill');
    $q->addSelect('SUM((hours * global_rate) - (hours * local_rate)) as job_profit');
    $q->groupBy('job_id');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM