恐らく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でした。