cakephp3 クエリービルダーにてカラムとカラムの合計を出す書き方を教えていただきたいです。
最初はすべてデータを引っ張ってきたうえでphpのコードで計算をするつもりでしたが、いろいろややこしくスマートではないので、クエリービルダーでデータを引っ張る際にできるだけ計算をしてしまいたいというのが前提です。
やりたいことは、下記ソース「fields」部分の用に、「BBtable.recipe_value」と「DDtable.item_volume」を掛け算して「ttl」として取得したいです。
その後は、「DDtable.item_id」で[group by]をして同じ「DDtable.item_id」同士の「ttl」はSUMを使って足し合わせておきたいです。
【Q1】カラムとカラムを掛けてttlを出すためにはどのような書き方が最適ですか。またその後の同じ「DDtable.item_id」同士の「ttl」の足し方も教えていただきたいです。
ちなみにSQL文ですと、該当部分は「sum((lr.recipe_valueri.item_volume10)) as ttl」で
【Q2】ちなみにですが「contain」部分が1行目の「'AAtable.BBtable.CCtable.DDtable.EEtable.FFtable'」しか無い場合、後にwhere句などで参照できるのは、「FFtable」のみという認識で良いでしょうか?
何かご不明点あればご連絡ください。
ご教授いただけると幸いです。よろしくお願いいたします。
$query = $this->Querytable->find('all',[ 'contain' => [ 'AAtable.BBtable.CCtable.DDtable.EEtable.FFtable', 'AAtable.BBtable', 'Atable.BBtable.CCtable.DDtable' => function($q){ return $q->group('DDtable.item_id'); }, ], 'fields' => 'sum((BBtable.recipe_value) * (DDtable.item_volume)) as ttl' ]);
あなたの回答
tips
プレビュー