このようなテーブル構成だった時の
メディアごとのpriceの合計を取りたいのですが、階層が深くなるのを改善したいです。
テーブル定義
-- Media --
id 1,2
name メディアA,メディアB
-- Client --
id 1,2,3,4
media_id 1,2,1,2
name A会社,B会社,C会社,D会社
price 100,200,300,400
MediaはhasManyでClientとつながっています
ClientはbelongsToでMediaとつながっています
最終的に取りたい形は
{
id 1
name メディアA
total_price 400
},
{
id 2
name メディアB
total_price 600
},
メディアごとのpriceを取得しようとしているのですが、
total_priceがものすごく階層が深い場所にあり使いにくいです。
$medias = $this->Medias->find()->contain([
'Clients'=> function ($q) {
$sum = $q->func()->sum('price');
return $q
->select(['Clients.id','Clients.media_id', 'total_price' => $sum])
->group('Clients.media_id');
}]);
結果は、
medias {
id
name
clients {
id,
media_id,
total_price xxxx
}
}
total_priceを階層トップにして取得したいのですが出来ません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/01 03:34