恐らくcakePHP4の時からは大した変化はなさそうだけど、ただやり方を忘れていることだらけなので記録。
今回はDBのあるテーブルから指定したカラムの中から最大値を取得する方法。
SQLではmaxを使う形を、cakePHPではmax()という関数を使用。
クエリー文章を作るため色々と準備をする。
$query = $this->Parts->find();
$max = $query->select(['id' => $query->func()->max("id")]);
select()の引数に配列でmax文となるものを生成するみたいなものを用意するみたい。
しかし、これでやってみると以下のようなエラーが発生
This is a Query object, to get the results execute or iterate it.
んんーーよく分からん。
調べてみると、maxって一件しか出ないよね?最大値なんだから。
ということで、このselectに続きをつけてあげます。
$max = $query->select(['num' => $query->func()->max("num")])->first();
そう、first()で一件だけを取り出すというもの。
これをつけると無事エラーが消えた。
デバッグで確認すると、配列になってて、[‘num’]があったので、指定したカラム名を配列のキーにいれるといいみたい。
echo $max['num']
値の取り出しは、初期にデータが何もない時はNULLでした。