2015-08-23 11 views
6

Ho un ciclo foreachYii2 - soggetto non sta risparmiando in ciclo foreach in Yii2

Ho eseguito variabile per ogni elemento

$tags = ['#first_Tag','#second_tag','#third_tag','#fourth_Tag']; 
foreach ($tags as $t) : 

    $model = new Tags; 

    $model->tag_name = $t; 

    $model->save(); //yii2 

endforeach; 

questa funzione salva solo l'ultimo elemento che è #fourth_Tag. Qualcuno può avere una soluzione a riguardo. Grazie in anticipo.

+1

Si prega di mostrare il codice del modello 'Tags'. –

+2

'$ model-> save()' dovrebbe restituire true se il modello è stato salvato, false altrimenti. Provalo e se restituisce false, fai 'print_r ($ model-> errors)' per vedere cosa c'è che non va. – Beowulfenator

+0

Ho usato questo problema e ha funzionato correttamente ..... grazie –

risposta

2

ho incontrato esattamente lo stesso problema e ottenuto soluzione perfetta. Questo è testato.

$tags = ['#first_Tag','#second_tag','#third_tag','#fourth_Tag']; 
foreach ($tags as $t) : 

    $model = new Tags; 

    $model->tag_name = $t; 

    $model->save(); //yii2 

    unset($model); 

endforeach; 

Questo è quando si crea una nuova variabile con lo stesso nome di quella esistente, sovrascrive il suo valore. Qui non è necessario creare un nuovo attributo o impostare l'id su null; solo unset()$model prima della fine del ciclo foreach.

+1

@ sohelahmadm grazie –

3

Prova questa ..

$tags = ['#first_Tag','#second_tag','#third_tag','#fourth_Tag']; 
$model = new Tags; 

foreach ($tags as $t) : 

    $model->id = NULL; //primary key(auto increment id) id 
    $model->isNewRecord = true; 
    $model->tag_name = $t; 

    $model->save(); //yii2 

endforeach; 
+0

Grazie @gamitg ha funzionato –

+0

hai gamitg Ho provato il tuo codice.It davvero funzionante..ma creo un extra archiviato nel mio DB. Puoi dire Y itz è successo ??? –

+0

non crea campi extra ma crea una nuova riga per il nuovo record. – GAMITG