2016-08-22 4 views
0

Sorry Jungs mein Titel könnte nicht wirklich erklären, was ich erreichen will, ich habe eine Reihe von Ländern, und ich möchte es in der Datenbank speichern unten ist mein CodeWie man mehrere Spalten mit einem Klick in yii2 speichert

public function actionCountries(){ 
    $countries = array("AF" => "Afghanistan", 
    "AX" => "Åland Islands", 
    "AL" => "Albania", 
    "DZ" => "Algeria", 
    "AS" => "American Samoa", 
    "AD" => "Andorra", 
    "AO" => "Angola", 
    "AI" => "Anguilla", 
    "AQ" => "Antarctica", 
    "AG" => "Antigua and Barbuda", 
    "AR" => "Argentina", 
    "AM" => "Armenia", 
    "AW" => "Aruba", 
    "AU" => "Australia", 
    "AT" => "Austria", 
    "AZ" => "Azerbaijan", 
    "BS" => "Bahamas", 
    "BH" => "Bahrain", 
    "BD" => "Bangladesh", 
    "BB" => "Barbados", 
    "YE" => "Yemen", 
    "ZM" => "Zambia", 
    "ZW" => "Zimbabwe"); 

    $model = new Country(); 
    foreach($countries as $code => $name){ 
     $model->code = $code 
     $model->code = $name 
     if($model->save()){ 
     echo $model->countryId; 
     } 
     } 

} 

Ich möchte das ganze Land in der Datenbank mit einem einzigen Klick speichern, aber das Ergebnis ist leer, wenn ich ein falsches Argument an die save() Methode anliege, bekam ich das letzte Element des Arrays in gespeichert die Datenbank wie unten

$model = new Country(); 
foreach($countries as $code => $name){ 
    $model->code = $code 
    $model->code = $name 
    if($model->save(false)){ 
    echo $model->countryId; 
    } 
    } 
    this code will save only the last element in the array while the first code did nothing 

Jede Hilfe zu diesem dank

Antwort

0

Es ist, weil

$model = new Country(); 

außerhalb der Schleife ist, so dass Sie das gleiche Modell immer und immer wieder sparen. Verschiebe dies in die Schleife.

Übrigens - es ist nicht effizient. Werfen Sie einen Blick auf batchInsert() Methode für mehr Speicher-freundliche Weise, es zu tun.

+0

danke für deine schnelle Antwort aber ich bewege $ model = new Country(); innerhalb der Schleife, aber immer noch nicht funktioniert, – sam

+0

Danke, es funktioniert jetzt, ich habe es innerhalb der Schleife verschoben und übergeben Sie ein FALSE-Argument an die save() -Methode. – sam

Verwandte Themen