Datenfüllung


Datenbank: Bevölkerung

Einführung

Laravel enthält eine Shim-Klasse, die Tests für Ihre Datenbank füllen kann Daten. Alle Füllklassen werden im Verzeichnis

abgelegt. Sie können der Füllklasse einen beliebigen Namen geben, es wird jedoch empfohlen, einer Namenskonvention wie

zu folgen. Normalerweise definiert Laravel standardmäßig eine database/seeds-Klasse. Über diese Klasse können Sie mit der UsersTableSeeder-Methode andere Seed-Klassen ausführen, um die Reihenfolge der Datenfüllung zu steuern. DatabaseSeedercall

Seeder schreiben

Führen make:seeder diesen Artisan-Befehl aus, um den Seeder zu generieren. Die vom Framework generierten Seeder werden im Verzeichnis database/seeds abgelegt.

php artisan make:seeder UsersTableSeeder

Eine Seeder-Klasse enthält nur eine Standardmethode: run . Diese Methode wird aufgerufen, wenn der Befehl db:seed Artisan ausgeführt wird. In der run-Methode können Sie nach Bedarf Daten in die Datenbank einfügen. Sie können Daten auch manuell mit dem Query Builder oder der Eloquent Model Factory einfügen.

{tip} Der Stapelzuweisungsschutz wird automatisch deaktiviert, wenn Daten ausgefüllt werden.

Fügen Sie wie unten gezeigt eine Dateneinfügungsanweisung in der Methode DatabaseSeeder in der Standardklasse run hinzu:

  <?php
      use Illuminate\Support\Str;
      use Illuminate\Database\Seeder;
      use Illuminate\Support\Facades\DB;
      class DatabaseSeeder extends Seeder{    
      /**
     * Run the database seeds.
     *
     * @return void
     */    
    public function run()   
     {       
         DB::table('users')->insert([        
             'name' => Str::random(10),            
             'email' => Str::random(10).'@gmail.com',            
             'password' => bcrypt('secret'),       
           ]);  
        }
    }

{tip} Sie befinden sich in run Sie können Typen in der Methodensignatur verwenden, um die benötigten Abhängigkeiten einzuschränken. Sie werden automatisch vom Laravel-Servicecontainer gelöst.

Verwendung einer Modellfabrik

Natürlich ist das manuelle Ausfüllen bestimmter Eigenschaften für jedes Modell mühsam. Alternativ können Sie eine Modellfabrik verwenden, um auf einfache Weise große Mengen an Datenbankdaten zu generieren. Lesen Sie zunächst die Dokumentation zur Modellfabrik, um zu erfahren, wie Sie eine Fabrikdatei definieren. Sobald Sie Ihre Fabrikdatei definiert haben, können Sie die Hilfsfunktion factory verwenden, um Daten in die Datenbank einzufügen.

Erstellen Sie beispielsweise 50 Benutzer und erstellen Sie eine Zuordnung für jeden Benutzer:

/**
 * 运行数据库填充。
 *
 * @return void
 */
 public function run(){
     factory(App\User::class, 50)->create()->each(function ($u) {
             $u->posts()->save(factory(App\Post::class)->make());   
           });
     }

Andere Seeder anrufen

In der Klasse DatabaseSeeder können Sie call verwenden Methode zum Ausführen anderer Seed-Klassen. Verwenden Sie die Methode call, um die Datenpopulation in mehrere Dateien aufzuteilen, damit ein einzelner Seeder nicht extrem groß wird. Übergeben Sie einfach den Namen der Seeder-Klasse, die Sie ausführen möchten:

/**
 * 运行数据库 seeds。
 *
 * @return void
 */
 public function run(){
     $this->call([     
        UsersTableSeeder::class,        
        PostsTableSeeder::class,        
        CommentsTableSeeder::class,    
       ]);
  }

Running Seeders

Vervollständigen Sie die Seeder-Klasse Nach dem Schreiben müssen Sie möglicherweise den Befehl dump-autoload verwenden, um Composer neu zu generieren Autoloader:

composer dump-autoload

Jetzt können Sie Artisan-Befehle db:seed verwenden, um die Datenbank zu füllen. Standardmäßig führt der Befehl db:seed die Klasse DatabaseSeeder aus, die zum Aufrufen anderer Seed-Klassen verwendet werden kann. Sie können jedoch auch die Option --class verwenden, um eine bestimmte Seeder-Klasse anzugeben:

php artisan db:seed

php artisan db:seed --class=UsersTableSeeder

Sie können die Datenbank auch mit dem Befehl migrate:refresh füllen, wodurch alle Migrationen zurückgesetzt und erneut ausgeführt werden. Mit diesem Befehl kann die Datenbank neu erstellt werden:

php artisan migrate:refresh --seed
Dieser Artikel wurde zuerst auf der Website LearnKu.com veröffentlicht.