データ充填


#Seeder を実行する

シーダーの作成

このアーティザン コマンド make:seeder を実行してシーダーを生成します。フレームワークによって生成されたシーダーは、database/seeds ディレクトリに配置されます。

php artisan make:seeder UsersTableSeeder

シーダー クラスには、デフォルト メソッド run が 1 つだけ含まれます。このメソッドは、db:seed Artisan コマンドの実行時に呼び出されます。 run メソッドでは、必要に応じてデータベースにデータを挿入できます。クエリ ビルダーまたは Eloquent モデル ファクトリを使用して、データを手動で挿入することもできます。

{ヒント} データが入力されると、バッチ割り当て保護は自動的に無効になります。

以下に示すように、デフォルトの DatabaseSeeder クラスの run メソッドにデータ挿入ステートメントを追加します。

  <?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'),       
           ]);  
        }
    }

{ヒント} 型を使用して、run のメソッド シグネチャに必要な依存関係を制限できます。これらは、Laravel サービス コンテナーによって自動的に解決されます。

#Model Factory の使用

もちろん、モデルごとに指定されたプロパティを手動で設定するのは面倒です。代わりに、モデル ファクトリを使用して、大量のデータベース データを簡単に生成できます。まず、モデル ファクトリのドキュメントを読んで、ファクトリ ファイルの定義方法を学習します。ファクトリ ファイルを定義したら、

factory ヘルパー関数を使用してデータベースにデータを挿入できます。

たとえば、50 人のユーザーを作成し、各ユーザーの関連付けを作成します。

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

他のシーダーを呼び出す

DatabaseSeeder クラスでは、call メソッドを使用して他のシード クラスを実行できます。 call メソッドを使用してデータ集団を複数のファイルに分割し、単一のシーダーが極端に大きくならないようにします。実行したいシーダー クラスの名前を渡すだけです:

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

シーダーの実行

シーダー クラスを完了します。書き込み後、

dump-autoload コマンドを使用して Composer のオートローダーを再生成する必要がある場合があります:

composer dump-autoload

これで、Artisan コマンド

db:seed を使用してデータベースにデータを入力できるようになります。 。デフォルトでは、db:seed コマンドは DatabaseSeeder クラスを実行します。このクラスは、他の Seed クラスを呼び出すために使用できます。ただし、--class オプションを使用して、特定のシーダー クラスを指定することもできます。

php artisan db:seed

php artisan db:seed --class=UsersTableSeeder

コマンドを使用して、データベースにデータを設定することもできます。 , このコマンドは、すべての移行をロールバックして再実行します。次のコマンドを使用してデータベースを再構築できます。

php artisan migrate:refresh --seed
この記事は、LearnKu.com

Web サイトで最初に公開されました。