Ich habe Converting Multiple Records gelesen. Jetzt versuche ich mehrere Fotos gleichzeitig aus einem Formular zu speichern.CakePHP 3.x: mehrere Datensätze speichern
mit:
debug($this->request->data);
Ich habe dies:
[
(int) 1 => [
'filename' => '25483_106728809362869_5795827_n.jpg',
'description' => '',
'album_id' => '2'
],
(int) 3 => [
'filename' => '44569_193398817463220_816845208_n.jpg',
'description' => '',
'album_id' => '1'
]
]
Es ist in Ordnung zu sein scheint.
Bake hat sich für mich diese Aktion Methode erstellt:
public function add() {
$photo = $this->Photos->newEntity();
if($this->request->is('post')) {
$photo = $this->Photos->patchEntity($photo, $this->request->data);
if($this->Photos->save($photo)) {
return $this->redirect(['action' => 'index']);
}
}
$this->set(compact('photo'));
}
Aber die CakeBook erklärt nicht gut, wie Sie vorgehen. Ich glaube, ich muss newEntities()
und patchEntities()
verwenden, aber ich verstehe nicht ganz, wie zu tun ist.
Zum Beispiel: warum die newEntity()
Methode akzeptiert NULL, während die Methode newEntities()
unbedingt ein Argument möchte ?? Die save()
Methode akzeptiert nur eine Entität gleichzeitig? Also muss ich das Speichern für jede Entität radieren?
Kann ich ein kleines Beispiel haben? Vielen Dank.
Dank @Isaac. Aber ich habe eine Sache bemerkt. Wenn ich 'newEntities()' verwende, kann ich das erst tun, nachdem das Formular gesendet wurde (wie du sagst). Normalerweise erstellt Bake mit 'newEntity()' jedoch eine leere Entity, die an die Vorlage übergeben wird und zum Erstellen des Formulars verwendet wird (in diesem Fall: $ this-> Form-> create ($ photo) '). . Wie geht es in diesem Fall? –
Ich glaube auch nicht, dass die 'save()' Methode mehrere Entitäten gleichzeitig speichern kann. In der Tat, einige Tests zu tun, bekomme ich diesen Fehler: 'Fehler: Aufruf einer Mitglied Funktion Fehler() auf Array Datei [...]/Hersteller/cookephp/cockephp/src/ORM/Tabelle.php Linie: 1302 ' –
Es scheint mir, dass die Lösung ist: 1) Erstellen Sie eine leere Entität mit' newEntity() ', die von dem Formular verwendet wird; 2) wenn das Formular gesendet wurde, erstellen Sie die Entität mit 'newEntities()' neu und übergeben '$ this-> request-> data'; 3) jede Entität auf 'save()' ' –