1

CakePHP の Find ステートメントは、以下のような構造の配列を生成します。表示されている結果セット (combined_score 順) を生成するように検索を既に注文しました。ここで、データに並べ替え関数を適用して、「average_votes」で並べ替えたいと思います。以下の「ここから:」/「ここから:」を参照してください。

提案をいただければ幸いです。

From this:
Array
(
[0] => Array
    (
        [Vehicle] => Array
            (
                [id] => 52
                [user_id] => 101
                [name] => Ford
                [total_votes] => 5
                [average_votes] => 3.8
                [combined_score] => 19
            )

    )

[1] => Array
    (
        [Vehicle] => Array
            (
                [id] => 48
                [user_id] => 101
                [name] => Nissan
                [total_votes] => 6
                [average_votes] => 5
                [combined_score] => 2
            )
    )
)

To this:
Array
(
[0] => Array
    (
        [Vehicle] => Array
            (
                [id] => 48
                [user_id] => 101
                [name] => Nissan
                [total_votes] => 6
                [average_votes] => 5
                [combined_score] => 2
            )
    )   

[1] => Array
    (
        [Vehicle] => Array
            (
                [id] => 52
                [user_id] => 101
                [name] => Ford
                [total_votes] => 5
                [average_votes] => 3.8
                [combined_score] => 19
            )

    )

)
4

2 に答える 2

2

実際に達成しようとしていることに応じて、以下のように Cake のデータベース レベルでこれを行うことができます。

$this->Vehicle->find('all',array('order' => array('Vehicle.combined_score' => 'asc', 'Vehicle.average_votes' => 'desc')));

最初に合計スコアで並べ替え、次に平均投票数で並べ替えます

2 番目のオプションは、次のように cakephp Set クラスを使用することです。

$results = Set::sort($results, '{n}.Vehicle.average_votes', 'desc');
于 2012-05-02T10:28:47.943 に答える
2

コントローラーで、検索機能にソートのオプションを追加できます。

$this->Vehicle->find('all',array('order' => array('Vehicle.average_votes DESC')));
于 2012-05-02T10:02:02.357 に答える