[英]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.