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 finder with options array is deprecated. Use named arguments instead.
findListを利用して、キーと値のカラムを指定して配列を取得する方法ですが、CakePHP4系の記述方法が CakePHP5系では非推奨となっています。
そのため「Deprecated(非推奨)」が表示されます。
その対処方法を解説します。
CakePHP5で「Deprecated(非推奨)」を回避して findListで値を取得する方法
CakePHP4で findListを使用して値を取得する方法
CakePHP4系で findListを利用して、キーと値のカラムを指定して配列を取得する方法は、下記となります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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系で推奨される記述方法に変えたものが下記になります。
|
1 2 3 4 5 6 7 |
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」で指定したカラムとは異なるカラムの値が取得されることもあるようで、正しい処理ではないようです。
|
1 2 |
$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」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3、CakePHP4、CakePHP5のバージョンを指定してインストールする詳細な手順を解説
CakePHP3のバージョンを指定してインストールする方法を詳細解説。CakePHP3のインストールはComposerを使うため設定もほぼ自動で完了。データベースの接続情報を記載すればアプリ開発のベースが整う。
-
-
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHPのログ出力方法の解説。app.phpにログ設定をし、スコープやレベルを指定してログ出力を振り分ける方法、CakePHP4で配列出力にはvar_exportが必要なことなどを解説。
-
-
cakephp3 カスタムバリデーションを簡易的に実装する方法
CakePHP3の独自のバリデーションをテーブルクラス内に簡単に記述する方法を解説。他のテーブルクラスでは使えないが、記述する量は少なく実装できるため、他で使わない処理を書くのには便利。
-
-
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でCSVファイルをアップロードしレコードを追加、更新する処理の作成方法の解説。モデルとは直接関連しないフォームからCSVファイルをアップロードするため汎用的に使用可能。
-
-
CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説
CakePHP3でデータ保存処理のログを取得する方法。save()では true、falseの戻り値しか取得できないが、saveOrFail()と try…catch文を使いエラーログ、エンティティを取得し、不具合の解析を行う。
-
-
CakePHP4 のコマンドプログラムからコンポーネントを読み込む方法解説
CakePHP4でコマンドプログラムからコンポーネントを呼び出す方法を解説。コントローラーから呼び出すときと大差はないが、use句でコンポーネントを指定する事がポイント。
-
-
CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
CakePHP5のヘルパーで他のヘルパーを読み込む方法を解説。公式の日本語CookbookはCakePHP4のソースのままで間違っているため注意が必要。CakePHP4からの移行の際も同じ点に注意が必要。
-
-
CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法
CakePHP3でcomposerを使ってパッケージ(ライブラリ、プラグイン)をインストールする方法の解説。PHPを使うのはCakePHP3が初めてというような方への使い方から解説。
-
-
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説
CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。
-
-
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4でデフォルトのレイアウトファイル「default.php」は管理側に使用し、これとは別のデザインを公開側のページに設定したい、を実装する方法を解説。