CakePHP (v3.x)、データベースから取得したデータの並び替え。

今回は以下の様なテーブル構造があった状況での並べかえを実装します

CREATE TABLE `cars` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `maker` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `price` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `manufacture_date` varchar(255)  date NOT NULL,
  PRIMARY KEY (`id`)
);

車のデータを保存するデータベースです。今回は車のディーラーを営んでいるという体で、このデータベースに登録している車を表示画面に表示する状況を考えます。 お客さんはなるべく安くて新しい車が欲しいので、価格が安く、製造年月日が新しい順にこのデータベースから車の情報を取得しましょう。

コードは以下の様になります

(CarsTable.php)

public function getReasonableCars(){
    $query = $card->find('all', [
        'order' => ['Cars.price' => 'ASC', 'Cars.manufacture_date' => 'DESC']
    ]);
    $row = $query->first();
    return $row;
}

価格はASCで安い順 日付はDESCで新しい順になります。