CakePHP 2.x => 3.x Upgrade-Anweisungen
1. Controller-Ebene
1.find('list')
Im Original 2.x implementiert diese Methode key=>value
durch die Angabe der „fields“ in der Option 3.x verwendet das „keyField“. und 'keyField' in der Option 'valueField' zu ersetzen, muss der Rückgabewert mit toArray()
2.find('first'), find('count')
3.x hat diese beiden Parameter vollständig aufgegeben und verwendet find()->first() und find()->count () um
3. Wenn Sie nach Abfragen suchen, die sich auf Tabellen beziehen, müssen Sie das Attribut „enthalten“ hinzufügen. Cake 3.x verknüpft Tabellen standardmäßig nicht miteinander
4.findById
**?Kein relevantes Dokument gefunden?**
Das Format von findById in 2.x ist ($id,array $fields)
3.x darf nur einen Parameter haben ($ id) müssen Sie die Daten mit der Methode select(array $fields)
5.Component->initialize()
2.x ruft den Controller ab, der die Komponente aufruft, durch initialize(Controller $Controller)
3.x hat den Parameter von initialize in initialize(array $config) geändert , holen Sie sich
6.SessionComponent
3.x hat diese Komponente aufgegeben und durch $this->request->session()
2. Modellebene
1.Assoziationen
2.x realisiert Assoziationen durch Definieren von Attributen
3.x muss $this->belongsTo, $this->hasMany, $this- in der Initialisierungsmethode in Tabelle > aufrufen ;belongsToMany, $this->addAssociations und andere Methoden, um
2.Validierung
2.x implementiert die Datenvalidierung durch Definition des Validierungsattributs
3.x muss die Methode validationDefault(Validator $validator) in der Tabelle definieren, um
3.virtualFields
Dieses Attribut wurde in 3.x aufgegeben. Wenn Sie es verwenden müssen, müssen Sie die Methode
in Entity hinzufügen. Sie müssen beispielsweise das virtuelle Feld full_name in der Tabelle definieren A
. Zuerst müssen Sie das virtuelle Feld full_name in Tabelle A in der Entität definieren. Fügen Sie dann full_name zu $_accessible
hinzu kann nur über die Objekt->-Eigenschaft und nicht über das Array
abgerufen werden
**? Kein relevantes Dokument gefunden?**
3.x hat diese Methode möglicherweise aufgegeben und kann durch die get()-Methode
ersetzt werden
3.x Diese Methode wird aufgegeben und muss durch TableRegistry::get()
ersetzt werden
2.x muss nur as im Feldattribut hinzufügen, z. B. 'fields'=>array('id as table_id')
3.x muss ein definieren Alias Verwenden Sie einen Schlüssel zum Hinzufügen, z. B. 'fields'=>['table_id'=>'id']
(Ansichtsebene, verschoben aus dem Ansichtsordner von 2.x in die Vorlage von 3.x)
1.$this->Html->url
Verwenden Sie in 3.x $this->Url->build anstelle von
1. Assoziationen
Müssen Sie beim Abfragen von hasMany-Tabellenassoziationen, wenn Sie Felder angeben müssen, Assoziationsschlüssel zu den Feldern hinzufügen? ? ?
Das Obige stellt das Upgrade von CakePHP 2.x auf 3.0 vor, einschließlich aller Aspekte. Ich hoffe, es wird Freunden, die sich für PHP-Tutorials interessieren, hilfreich sein.