使用doctrine 1.2我正在尝试执行以下操作:
假设我有一个模型Job,它有很多Invoice(s)。
在我的发票模型中,我有一个像
这样的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');
}
工作正常,还要注意上面是根据需要计算的,因为根据用户的要求,需要以不同的方式计算。
我遇到的问题是尝试执行以下操作:
选择作业和foreach作业 - >发票SUM('invoice_payout)作为job_payout,SUM('invoice_bill)作为job_bill,SUM('invoice_profit')作为job_profit。
我知道上面的语法不是正确的,但这是解释我所追求的最佳方式。
答案 0 :(得分:1)
“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');
}