CakePHP 2.x => 3.x アップグレード手順
1. コントローラー層
1.find('list')
オリジナルの 2.x では、このメソッドはオプションで 'fields' を指定することで key=>value を実装していましたが、3.x では 'keyField' と 'valueField' に置き換えられました。 ' オプションで戻り値を toArray() を使用して変換する必要があります
3.x ではこれら 2 つのパラメータが完全に放棄され、find()->first() と find()->count() を使用して置き換えます。
4.findById
**? 関連するドキュメントが見つかりません?** 2.x の findById の形式は ($id, array $fields) です
3.x にはパラメーター ($id) が 1 つだけあります。データをフィルターするには select(array $fields) メソッドを渡す必要があります
5.Component->initialize()
3.x は、initialize のパラメーターをInitialize(array $config) に変更し、$controller を使用します= $ this->_registry->getController();Get
6.SessionComponent
2.モデルレイヤー
1.Associations
2.x は属性を定義することで関連付けを実現します 3.x は表の初期化メソッドで $this->belongsTo、$this->hasMany、$this->belongsToMany、$this を呼び出す必要があります - >addAssociations とその他の実現メソッド
2.Validation
3.x は、これを実現するために Table で validationDefault(Validator $validator) メソッドを定義する必要があります
3.virtualFields
例えば、テーブル A に仮想フィールド full_name を定義する必要があります
まず、テーブルAのEntityに保護された関数_getFullName()
を追加する
$_accessibleにfull_nameを追加する
A->findを使用する場合、値はobject->propertyからのみ取得でき、配列からは取得できません
**?関連するドキュメントが見つかりません?**
3.x ではこのメソッドが廃止された可能性があり、get() メソッドで置き換えることができます
3.x このメソッドは廃止されたため、TableRegistry::get() に置き換える必要があります
2.x 'fields'=>array('id as table_id') のように、fields 属性に as を追加するだけです
3.x エイリアスを定義する場合は、次のことを行う必要があります'fields '=>['table_id'=>'id'] などのキーを追加します
(ビューレイヤー、2.xのViewフォルダーから3.xのTemplateに移動)
1.$this->Html->url
3.x では、代わりに $this->Url->build を使用してください
1.関連付け
hasManyテーブルの関連付けをクエリする際、フィールドを指定する必要がある場合、フィールドに関連付けキーを追加する必要がありますか? ? ?