cakephp3のpaginateヘルパーを使用して、関連テーブルの集約されたデータを元に並び替えを行いたいのですが、どうにもエラーが出てうまくいきません。
下記のようにデフォルトはArticleが作成された日時で並び替えたいのですが、View側でcountやsumをクリックされた際はSalesのそれぞれ集約された値を元に並び替えたいです。
どなたか詳しい方、方法をご存知でしたら助けていただけないでしょうか?
- Controller
$query = $this->Articles->find(); $query ->contain([ 'Sales' => function ($q) use ($query) { return $q ->select([ 'count' => $query->func()->count('Sales.price'), 'sum' => $query->func()->sum('Sales.price'), 'article_id' ]) ->group('article_id'); } ]); $this->paginate = [ 'order' => ['Articles.created' => 'desc'] ]; $article = $this->paginate($query); $this->set(compact('article'));
- View
<?= $this->Paginator->sort('Sales.count') ?><?= $this->Paginator->sort('count') ?> <?= $this->Paginator->sort('sum') ?>
などの書き方も試したのですが、集約された値を表示するための仮想のカラム?のようでcolumn not foundになってしまいます。
あなたの回答
tips
プレビュー