【やりたいこと】
・下記のようなSQL文をCakephp3 クエリービルダーで実現したいです。
SELECT *,sum(hoge) as hoge_ttl FROM hoge_table WHERE ymd='2020-02-19' group by hoge_id order by temperature,hoge_id;
【試してみたこと】
・下記実行したクエリービルダーですが、もちろんselectしたカラムのみしか取得できませんでした。
selectに一つずつほしいカラムを記述してもいいのですが、それですとcontainで定義したモジュールと紐づかない為、リレーション先の値も取得できませんでした。
Controller
1$hoge_table = $this->HogeTable->find('all',[ 2 'conditions'=>['ymd'=>'2020-02-19'], 3 'contain'=>['HogeUnit'], 4 'group'=>'hoge_id', 5 'order' => 'temperature,hoge_id ASC' 6 ]); 7$hoge_table ->select([ 8 "hoge_ttl "=>$hoge_table ->func()->sum('hoge'), 9]); 10$hoge_table = $hoge_table ->toArray();
・このようにリレーション先(hoge_unit)の値もしっかり取得できるようにしたいです。
ctp
1<?php for ($i=0; $i < count($hoge_table ); $i++) { ?> 2<tr> 3<td><?= $hoge_table [$i]->name ?></td> 4<td><?= $hoge_table [$i]->hoge_unit->name ?></td> 5</tr> 6<?php }?>
とりわけCakephp3 クエリービルダーにて、SQL文でいう「SELECT *,sum(hoge) as hoge_ttl 」の部分を実現できる方法を教えていただけると幸いです。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/21 05:49