久しぶりにメンテのため CakePHP 触ったのですが、使い方ほとんど忘れかけてますorz
とりあえず、DBの商品テーブルから取得した項目に対して価格順に並べ変えて欲しいという依頼だったので、調べたら、findAllの引数で指定できるんですね。
下記のように第三引数に指定するだけでいいっぽいです。
$this->Product->findAll("prd_del=0" , null , "prd_price DESC" );
SELECT *
FROM Products
WHERE prd_del = 0
ORDER BY prd_price DESC
参考までに、findAllの書式です。
findAll(string $conditions, array $fields, string $order, int $limit, int $page, int $recursive)
$conditions : 取得する条件。where句に相当。(省略時は全件取得)
$fields : 取得するフィールドリスト。select句に相当。(省略時は全フィールド取得)
$order : レコードの取得順。order by句に相当。(省略時はレコードの格納順)
$limit : 取得する件数。(省略時は全件取得)
$page : 取得するページ数(よくわかりません)
$recursive : 再帰的に取得するアソシエーションの深さ(アソシエーション使ってないのでよくわかりません)
で、CakePHP公式マニュアル 3.7.3.2 findAllで「findAll は非推奨となりました。代わりに find('all') を使用してください。」って書いてました。
どうやらいつの間にか findAll 非推奨になったんですね。(多分1.2 RTM リリースの時かな? 今回のメンテサイトは1.2RC版使ってるので)
技術の変化が激しいWeb,オープンソースの世界、ちょっとでも最新に乗り遅れると浦島太郎になってしまいます。。。。