2

CakePHP 2.x

SELECT .. AS ステートメントを生成するデータベース フィールドを含むページ分割されたデータの並べ替えに問題があります。

選択したフィールドのエイリアスで並べ替えようとすると、自動的に元のフィールド名に変換され、SUM() フィールドなどで並べ替えることができなくなります。

コード:

[...]
$paginate['fields'] = array('SUM(Item.count) AS count');
$paginate['order'] = array('count' => 'DESC');
[...]

生成された SQL:

SELECT Item.count AS count FROM items ORDER BY Item.count

私が期待していたもの:

SELECT Item.count AS count FROM items ORDER BY count

これを回避するための助けは大歓迎です。

4

1 に答える 1

3

あなたの場合、私は仮想フィールドを使用します:

$this->Item->virtualFields['count'] = 'SUM(Item.count)';

paginate() 呼び出しの前にコントローラーで、またはモデル自体を介して設定します。

しかし、グループステートメントを見逃していませんか?

于 2013-07-08T23:04:13.973 に答える