2016-12-18 26 views
4

Ich benutze Laravel Framework und ich wurde kürzlich informiert, dass es etwas namens database seeding gibt, die einen gefälschten Datensatz für unsere Tests produziert. Ist mein Verständnis richtig?Was ist Datenbank-Seeding in Laravel?

Nun, das ist ziemlich merkwürdig. Wie es funktioniert? Wie weiß es, welche Art von Daten brauche ich in X-Spalte der Datenbank? Und wie generiert es es?

Auch Kann ich nicht machen einen Samen meiner realen Datensatzes (so etwas wie ein Export)? Wissen Sie, ich kann kein Englisch, deshalb kann ich das Konzept seed im Datenbankfeld nicht verstehen.

Antwort

3

Normalerweise verwenden Sie model Factories und faker, um gefälschte Daten (mit Beziehungen usw.) zum Entwickeln und Testen Ihrer App zu erstellen.

Wenn Sie echte Daten seed, verwenden Sie einfach Befehle zum Importieren von Dump. Oder, wenn Ihre Daten etwas wie eine Tabelle mit Ländern sind, erstellen Sie einen Seeder, der die echten Daten einfügt, ohne faker oder Model Factory zu verwenden.

Sie können auch some package verwenden, um die Sämaschine aus echten Daten zu erstellen.

Sie können die docs on seeding lesen.

+0

1) Wenn ich einen echten Datenbestand mache, wo wird er gespeichert? 2) Und in diesem Fall, wenn ich 'php artisan migrate --seed' verwende, werden dann die Migrationen aktualisiert und alle echten Daten automatisch wieder eingefügt? – stack

+0

1) In Seeder-Klassen. Oder die Seder-Klasse ruft einen Befehl auf (hängt vom Paket ab). 2) Ja. –

5

Ja, Laravel kommt mit dem sehr großen & beliebten Paket namens - Faker. Sie können dieses Beispiel mit Faker schreiben und 10 Benutzern gefällt dieses erzeugen (innen DatabaseSeeder.php):

use DB; 
use Illuminate\Database\Seeder; 
use Illuminate\Database\Eloquent\Model; 

use Faker\Factory as Faker; 

class DatabaseSeeder extends Seeder 
{ 
    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function run() 
    { 
     $faker = Faker::create(); 
     foreach (range(1,10) as $index) { 
      DB::table('users')->insert([ 
       'name' => $faker->name, 
       'email' => $faker->email, 
       'password' => bcrypt('secret'), 
      ]); 
     } 
    } 
} 

Das ist es - $faker->name eine zufällige Person Namen erzeugen, und $faker->email - eine zufällige E-Mail. Nach dem Ausführen des Befehls php artisan db:seed wird Ihre Datenbank mit einigen zufälligen Einträgen gefüllt.

Sie können dieses Paket in Ihrem composer.json Datei unter require-dev finden:

"require-dev": { 
    "fzaninotto/faker": "^1.6", // <------- here 
    "mockery/mockery": "0.9.*", 
    "phpunit/phpunit": "~5.0", 
    "symfony/css-selector": "3.1.*", 
    "symfony/dom-crawler": "3.1.*", 
    "laracasts/testdummy": "~2.0" 
}, 

Faker viele Daten erzeugen kann, von denen einige sind unten angegeben:

dies hilft
$faker->randomDigit; 
$faker->numberBetween(1,100); 
$faker->word; 
$faker->paragraph; 
$faker->lastName; 
$faker->city; 
$faker->year; 
$faker->domainName; 
$faker->creditCardNumber; 

Hoffnung!

+0

@stack - Gut zu wissen, dass es Ihnen geholfen hat, danke! –

Verwandte Themen