Ho letto Converting Multiple Records. Ora sto cercando di salvare più foto contemporaneamente da un modulo.CakePHP 3.x: salvataggio di più record
Con:
debug($this->request->data);
ho questo:
[
(int) 1 => [
'filename' => '25483_106728809362869_5795827_n.jpg',
'description' => '',
'album_id' => '2'
],
(int) 3 => [
'filename' => '44569_193398817463220_816845208_n.jpg',
'description' => '',
'album_id' => '1'
]
]
Sembra ok.
Bake ha creato per me questo metodo di azione:
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'));
}
Ma la CakeBook non spiega bene come procedere. Sento che devo usare newEntities()
e patchEntities()
, ma non ho capito bene come fare.
Ad esempio: perché il metodo newEntity()
può accettare NULL, mentre il metodo newEntities()
richiede necessariamente un argomento ?? Il metodo save()
accetta solo un'entità alla volta? Quindi, devo salvare il ciclo per ogni entità?
Posso avere un piccolo esempio? Grazie.
Grazie a @Isaac. Ma ho notato una cosa. Se uso 'newEntities()', posso farlo solo dopo che il modulo è stato inviato (come dici tu). Normalmente, tuttavia, con Bake il 'newEntity()' crea un'entità vuota che viene passata al modello e viene utilizzata per creare il modulo (in questo caso: '$ this-> Form-> create ($ photo)') . Come fare in questo caso? –
Inoltre, non penso che il metodo 'save()' possa salvare più entità contemporaneamente. In effetti, eseguendo alcuni test, ottengo questo errore: 'Errore: chiamata a una funzione membro errors() su array File [...]/vendor/cakephp/cakephp/src/ORM/Table.php Linea: 1302 ' –
Mi sembra che la soluzione sia: 1) creare un'entità vuota con' newEntity() ', che verrà usata dal modulo; 2) quando il modulo è stato inviato, ricrea l'entità usando 'newEntities()' e passando '$ this-> request-> data'; 3) ciclare ogni entità su 'save()' –