データ充填
- はじめに
- Laravel には、データベースにテストデータを入力できるフィラー クラスが含まれています。すべての充填クラスは、
- database/seeds ディレクトリに配置されます。フィラー クラスには任意の名前を付けることができますが、UsersTableSeeder のような命名規則に従うことをお勧めします。通常、Laravel はデフォルトで
- DatabaseSeeder クラスを定義します。このクラスを通じて、call メソッドを使用して他のシード クラスを実行し、データ入力の順序を制御できます。
シーダーの作成
このアーティザン コマンド 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'), ]); } }
#Model Factory の使用もちろん、モデルごとに指定されたプロパティを手動で設定するのは面倒です。代わりに、モデル ファクトリを使用して、大量のデータベース データを簡単に生成できます。まず、モデル ファクトリのドキュメントを読んで、ファクトリ ファイルの定義方法を学習します。ファクトリ ファイルを定義したら、{ヒント} 型を使用して、
run
のメソッド シグネチャに必要な依存関係を制限できます。これらは、Laravel サービス コンテナーによって自動的に解決されます。
factory ヘルパー関数を使用してデータベースにデータを挿入できます。
/** * 运行数据库填充。 * * @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 サイトで最初に公開されました。