2016-05-14 5 views
0

Für mein Paket versuche ich mehrere Spalten in meiner users Datenbanktabelle zu erstellen.Konvertierung von Array zu String: Benutzermigrationsdatei

Meine Tabellenname Variablen sind wie folgt definiert:

private function fields() 
{ 
    return $this->fields = [ 
     'id' => [ 
      'type' => 'increments', 
     ], 
     'name' => [ 
      'type' => 'string', 
      'length' => 250, 
     ], 
     'email' => [ 
      'type' => 'string', 
      'length' => 250, 
      'extra' => 'unique' 
     ], 
     'password' => [ 
      'type' => 'string', 
      'length' => 100, 
     ], 
     'access_token' => [ 
      'type' => 'string', 
      'length' => 255, 
     ], 
     'remember_token' => [ 
      'type' => 'string', 
      'length' => 100, 
     ], 
    ]; 
} 

Ich versuche, über eine foreach-Schleife wie dies durch diese Schleife:

Schema::create('users', function($table) { 
    foreach ($this->fields as $field => $value) { 
     if(!Schema::hasColumn('users', $field)) { 
      var_dump(gettype($value['type'])); 
      $table->$value['type']($field); 
     } 
    } 
}); 

Als ich php artisan migrate laufen, erhalte ich eine Fehler: Array to string conversion

Der $value['type'] Teil ist das Problem. Ich kenne das Problem, kann aber nicht herausfinden, wie ich das umgehen kann.

Antwort

0

Zuerst müssen Sie es auf eine Variable wie folgt speichern:

Schema::create('users', function($table) { 
    foreach ($this->fields as $field => $value) { 
     if(!Schema::hasColumn('users', $field)) { 
      $type = $value['type']; 
      $table->$type($field); 
     } 
    } 
}); 
+0

Oh! Ich habe versucht, es in eine Variable wie $ type = $ value zu setzen, ich habe den '['type']' vergessen. Danke für Ihre Hilfe! – RW24

Verwandte Themen