CakePHP5系でDeprecatedを回避しfindListでキーと値のカラムを指定して取得する方法
2025/01/31
Deprecated (16384) : Since 5.0.0: Calling `findList` finder with options array is deprecated. Use named arguments instead.を回避する方法
findListを利用して、キーと値のカラムを指定して配列を取得する方法ですが、CakePHP4系の記述方法が CakePHP5系では非推奨となっています。
そのため「Deprecated(非推奨)」が表示されます。
その対処方法を解説します。
CakePHP5で「Deprecated(非推奨)」を回避して findListで値を取得する方法
CakePHP4で findListを使用して値を取得する方法
CakePHP4系で findListを利用して、キーと値のカラムを指定して配列を取得する方法は、下記となります。
public function getOptionsUsers()
{
// 取得するキーを指定
$listArray = [
"keyField" => "id",
"valueField" => "name"
];
// 取得条件を設定
$conditions["deleted"] = ; // 削除フラグ
return $this->find("list",$listArray)->where($conditions)->orderAsc("id")->toArray();
}
これをこのまま CakePHP5系にコピペして使用すると、下記の「Deprecated(非推奨)」メッセージが表示されます。
Deprecated (16384) : Since 5.0.0: Calling `findList` finder with options array is deprecated. Use named arguments instead. C:\xampp\htdocs\vendor\cakephp\cakephp\src\ORM\Table.php, line: 2649 You can disable all deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED`. Adding `vendor/cakephp/cakephp/src/ORM/Table.php` to `Error.ignoredDeprecationPaths` in your `config/app.php` config will mute deprecations from that file only. [in C:\xampp\htdocs\vendor\cakephp\cakephp\src\Core\functions.php, line 384]
CakePHP5で推奨されている findListで値を取得する方法
上記の「Deprecated(非推奨)」を回避し、CakePHP5系で推奨される記述方法に変えたものが下記になります。
public function getOptionsUsers()
{
// 取得条件を設定
$conditions["deleted"] = ; // 削除フラグ
return $this->find("list",keyField:"id",valueField:"association_name")->where($conditions)->orderBy(["id"=>"ASC"])->toArray();
}
CakePHP5 ChiffonBook 5.0 移行ガイド 非推奨 ORM
https://book.cakephp.org/5/ja/appendices/5-0-migration-guide.html#id7
上記に「Table::find() のオプションを配列で指定することは非推奨となりました。(Calling Table::find() with options array is deprecated. Use named arguments instead.)」と書いてありまして、これが上記の「Deprecated(非推奨)」の要因となっています。
そのため、推奨される記述方法に変更する必要があるようです。
ちなみに、下記の記述方法では「Deprecated(非推奨)」は出なくなりますが、「valueField」で指定したカラムとは異なるカラムの値が取得されることもあるようで、正しい処理ではないようです。
$listArray = ["keyField" => "id","valueField" => "name"]
return $this->find("list",options:$listArray)->where($conditions)->orderBy(["id"=>"ASC"])->toArray();
orderAsc、order、groupも非推奨になっている
CakePHP5 ChiffonBook 5.0 移行ガイド 非推奨 Database
https://book.cakephp.org/5/ja/appendices/5-0-migration-guide.html#id6
また、CakePHP4のコードでは「orderAsc()」を使用していますが、これも非推奨のようです。
「order(["id"=>"ASC"])」や「group()」も非推奨のようです。
それぞれ下記のように書き替える必要があります。
「orderAsc()」は「orderByAsc()」に。
「orderDesc()」は「orderByDesc()」に。
「order()」は「orderBy()」に。
「group()」は「groupBy()」に。
ちなみに、この「非推奨」は、使用していても「Deprecated(非推奨)」のメッセージは出ないようです。
CakePHP5の関連記事
CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法CakePHP4、5のユーザ認証でID、PASS以外の削除フラグなども条件加える方法
CakePHP4、CakePHP5系の認証処理でログインの有無の確認、ユーザ情報の取得の方法
CakePHP4、5で$_SERVERと同じようにURIを取得する「getUri()」の紹介
getParam('action')で取得するアクション名は別関数に移動しても不変CakePHP4系、CakePHP5系のexists()でカラムを指定して値の有無をチェックする方法解説
CakePHP4、5のnewEmptyEntityで作成したオブジェクトは空なのか、確認してみた
CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法
CakePHP4、5の認証処理で認証が通らない際の確認方法と確認箇所の紹介
CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意
その他の「CakePHP5」に関する記事一覧
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
CakePHP3でルーティングの設定変更をしたけど反映されない!そんなときは慌てず騒がずキャッシュをクリアしよう!ルーティングの設定もキャッシュされることがあるらしい。
-
-
CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でレコードを追加、更新(Insert、Update)する記述方法を解説。1件ずつ処理、全件をまとめて処理、条件に該当する複数件のレコードを処理方法をサンプルコードを用いて解説。
-
-
CakePHP4で「app_local.php」「.env」を利用して環境ごとの定数を振り分ける方法
CakePHP4で.env、app_local.phpに定数を定義してそれを呼び出す方法の解説。Gitでは管理せず本番環境と開発環境とで異なる定数を定義するためそれを利用する方法。
-
-
CakePHP3で「SQLSTATE[23000]: Integrity constraint violation」「SQLSTATE[42S22]: Column not found」などのエラーが出たときの確認するポイント
CakePHP3の開発で発生する「SQLSTATE[23000]: Integrity constraint violation」「SQLSTATE[42S22]: Column not found」のエラーには特有の原因もあるため、その説明と対処方法の解説。
-
-
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4でテンプレートやレイアウトファイルをデフォルトから変更する場合は「render()」を使用するが、記述場所はできるだけコントローラー内の最後の方に書く方がいい。
-
-
CakePHP3の更新画面でUpload Plugin 3.0を使う方法、viewで使う方法解説・その3
CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその3で記事を更新する際のファイルの取り回しなどについてを解説。
-
-
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングをする方法を解説。インストール方法、読み込み方法。および、具体的なスクレイピングを実行するサンプルソースも。
-
-
CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」
CakePHPでQRコードを生成するライブラリ「cakePHP-QR-Code-Helper」の紹介。GDライブラリのインストールも必要ないHelperとして提供されているため、ファイルを設置すればすぐに使用可能。
-
-
CakePHP4 でコマンドプログラム(シェルプログラム)を作成する方法解説
CakePHP4でバッチ処理を行うためのコマンド・シェルの実装方法について解説。bakeでテンプレートファイルを作成し、「execute()」に処理を記述する方法を解説。
-
-
CakePHP 2.x系 Viewでのコメントの記述方法など
CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。