2011-05-29 5 views
0

でoneToMany関係の総和を計算することは、私は多くの請求書(複数可)を持つモデルの仕事を持って言うことができます。教義1.2私は次のことをやろうとしている。:</p> <p>教義1.2を使用して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'); 
} 

のようなDQLのイベントリスナーを持っている私の請求書のモデルでは

私が午前問題は、次のような何かやろうとしている:

選択仕事をしてforeachのjob->はjob_bill、SUM( 'invoice_profitとして '(invoice_bill)job_payout、SUMとして(invoice_payout SUM)' を請求し')をjob_profitとして追加します。

私は上記のことが正しい構文ではないことを知っていますが、それは私がその後のことを説明できる最良の方法でした。

+0

私はフックが 'ジョブ'エンティティにあると思いますか?あなたは '$ q-> getSqlQuery()'出力を使って質問をipdateできますか? – J0HN

答えて

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'); 
} 
関連する問題