2015-08-23 12 views
6

Mam zmiennąYii2 - model nie jest oszczędność w pętli foreach w Yii2

Mam biegać pętli foreach dla każdego elementu

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

    $model = new Tags; 

    $model->tag_name = $t; 

    $model->save(); //yii2 

endforeach; 

ta funkcja oszczędza tylko ostatni element, który jest #fourth_Tag. Czy ktoś może mieć rozwiązanie na ten temat. Z góry dziękuję.

+1

Proszę pokazać kod modelu 'Tagi'. –

+2

'$ model-> save()' powinien zwracać wartość true, jeśli model został zapisany, w przeciwnym przypadku false. Przetestuj go i jeśli zwróci false, wykonaj polecenie 'print_r ($ model-> errors)', aby zobaczyć, co jest nie tak. – Beowulfenator

+0

Ja użyłem tego problemu i działało poprawnie ..... dzięki –

Odpowiedz

2

natknąłem się dokładnie ten sam problem i mam idealne rozwiązanie. To jest testowane.

$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; 

To jest, gdy tworzysz nową zmienną o tej samej nazwie, która już istnieje, nadpisuje jej wartość. Tutaj nie musisz tworzyć nowego atrybutu ani ustawiać identyfikatora na null; tylko unset()$model przed końcem pętli foreach.

+1

@sohelahmadm dzięki –

3

Spróbuj ..

$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

Dzięki @gamitg to działało –

+0

hai gamitg Próbowałem twój kod..itz naprawdę działa .. ale itz stworzyć dodatkowe pole w moim DB.Can mówisz Y to się stało ??? –

+0

nie tworzy dodatkowego pola, ale tworzy nowy wiersz dla nowego rekordu. – GAMITG