ダミーデータの生成
5333 ワード
実際のプロジェクト開発では、デバッガを容易にするために、データベースを埋め込むために偽のデータを使用することがよくあります.Laravelは、現代化された、非常に簡単で使いやすいデータ埋め込みスキームを提供しています.次に、Laravelが提供するデータの埋め込みを使用して、偽のユーザーを一括生成します.
ダミーデータの生成には、次の2つの段階があります.偽データを生成するモデル指定フィールドに値を付与-『モデルファクトリ』; ロット生成偽データモデル-『データ充填』;
モデルプラント
LaravelはデフォルトでFaker拡張パッケージを統合しており、この拡張パッケージを使用すると、偽のデータを簡単に生成できます.
例は次のとおりです.
FakerとEloquentモデルファクトリを使用して、指定したモデルの各フィールドにランダム値を設定できます.
本プロジェクトで生成したモデル工場は以下の通りである.
database/factories/UserFactory.php
defineは指定したデータモデルを定義しますモデルファクトリ.defineメソッドは、2つのパラメータを受信します.1つ目のパラメータは、指定されたEloquentモデルクラスであり、2つ目のパラメータは、Faker PHP関数ライブラリのインスタンスを受信する閉包関数であり、関数内でFakerメソッドを使用して偽データを生成し、モデルの指定フィールドに値を割り当てることができます.
生成したモデルファクトリファイルを修正し、以下のように修正します.
database/factories/UserFactory.php
ユーザーパスワードの暗号化操作を削除し、生成された偽の日付を使用してユーザーの作成時間と更新時間を割り当てます.
データの移入
LaravelではSeederクラスを使用して、データベースにテストデータを埋め込みます.すべてのSeederクラスのファイルはdatabase/seedsディレクトリの下にあり、ファイル名は『アルパカ式』に従って命名され、大文字と小文字の規範を厳格に遵守する必要があります.
Laravelのデフォルトでは、callメソッドを使用して他のSeederクラスを実行し、データの入力順序を制御できるDatabaseSeederクラスを定義しています.次のコマンドを使用して、ユーザー関連の偽データを埋め込むためのUsersTable Seederファイルを生成できます.
ユーザモデルファクトリを定義すると、生成されたユーザデータ埋め込みファイルでfactoryという補助関数を使用して偽データを使用するユーザオブジェクトを生成できます.
この方法を使用して、50人の偽ユーザーを作成します.
database/seeds/UsersTableSeeder.php
timesメソッドおよびmakeメソッドは、FactoryBuilderクラスによって提供されるAPIである.timesは、作成するモデルの数を指定するパラメータを受け入れ、makeメソッドが呼び出されるとモデルのセットが作成されます.makeVisibleメソッドは、Userモデルで指定した非表示属性$hiddenを一時的に表示し、次にinsertメソッドを使用して偽のユーザーリストを生成するデータをデータベースに一括挿入します.最後に、最初のユーザーの情報を更新し、後でこのアカウントを使用してログインするのを便利にしました.
次に、DatabaseSeederでcallメソッドを呼び出して、偽のデータ埋め込みを実行するファイルを指定する必要があります.
database/seeds/DatabaseSeeder.php
コマンドの実行
上記の操作が完了すると、ユーザーのバッチ・偽データの生成を開始できます.偽データを生成するコマンドを実行する前に、migrate:refreshコマンドを使用してデータベースをリセットし、db:seedを使用してデータ埋め込みを実行する必要があります.
UserTable Seederデータベースのパディングファイルを個別に指定する場合は、次のことができます.
次のコマンドを使用して、データベースのリセットと塗りつぶしを同時に実行することもできます.
ダミーデータの生成には、次の2つの段階があります.
モデルプラント
LaravelはデフォルトでFaker拡張パッケージを統合しており、この拡張パッケージを使用すると、偽のデータを簡単に生成できます.
例は次のとおりです.
// factory Faker\Generator
$faker = Faker\Factory::create();
//
$faker->name; // "Janie Roob"
//
$faker->safeEmail; // "[email protected]"
//
$faker->date // "2011-02-10"
//
$faker->time // "13:03:55"
FakerとEloquentモデルファクトリを使用して、指定したモデルの各フィールドにランダム値を設定できます.
本プロジェクトで生成したモデル工場は以下の通りである.
database/factories/UserFactory.php
define(App\Models\User::class, function (Faker $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
defineは指定したデータモデルを定義しますモデルファクトリ.defineメソッドは、2つのパラメータを受信します.1つ目のパラメータは、指定されたEloquentモデルクラスであり、2つ目のパラメータは、Faker PHP関数ライブラリのインスタンスを受信する閉包関数であり、関数内でFakerメソッドを使用して偽データを生成し、モデルの指定フィールドに値を割り当てることができます.
生成したモデルファクトリファイルを修正し、以下のように修正します.
database/factories/UserFactory.php
define(App\Models\User::class, function (Faker $faker) {
$date_time = $faker->date . ' ' . $faker->time;
static $password;
return [
'name' => $faker->name,
'email' => $faker->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
'created_at' => $date_time,
'updated_at' => $date_time,
];
});
ユーザーパスワードの暗号化操作を削除し、生成された偽の日付を使用してユーザーの作成時間と更新時間を割り当てます.
データの移入
LaravelではSeederクラスを使用して、データベースにテストデータを埋め込みます.すべてのSeederクラスのファイルはdatabase/seedsディレクトリの下にあり、ファイル名は『アルパカ式』に従って命名され、大文字と小文字の規範を厳格に遵守する必要があります.
Laravelのデフォルトでは、callメソッドを使用して他のSeederクラスを実行し、データの入力順序を制御できるDatabaseSeederクラスを定義しています.次のコマンドを使用して、ユーザー関連の偽データを埋め込むためのUsersTable Seederファイルを生成できます.
$ php artisan make:seeder UsersTableSeeder
ユーザモデルファクトリを定義すると、生成されたユーザデータ埋め込みファイルでfactoryという補助関数を使用して偽データを使用するユーザオブジェクトを生成できます.
この方法を使用して、50人の偽ユーザーを作成します.
database/seeds/UsersTableSeeder.php
times(50)->make();
User::insert($users->makeVisible(['password', 'remember_token'])->toArray());
$user = User::find(1);
$user->name = 'Aufree';
$user->email = '[email protected]';
$user->password = bcrypt('password');
$user->save();
}
}
timesメソッドおよびmakeメソッドは、FactoryBuilderクラスによって提供されるAPIである.timesは、作成するモデルの数を指定するパラメータを受け入れ、makeメソッドが呼び出されるとモデルのセットが作成されます.makeVisibleメソッドは、Userモデルで指定した非表示属性$hiddenを一時的に表示し、次にinsertメソッドを使用して偽のユーザーリストを生成するデータをデータベースに一括挿入します.最後に、最初のユーザーの情報を更新し、後でこのアカウントを使用してログインするのを便利にしました.
次に、DatabaseSeederでcallメソッドを呼び出して、偽のデータ埋め込みを実行するファイルを指定する必要があります.
database/seeds/DatabaseSeeder.php
call(UsersTableSeeder::class);
Model::reguard();
}
}
コマンドの実行
上記の操作が完了すると、ユーザーのバッチ・偽データの生成を開始できます.偽データを生成するコマンドを実行する前に、migrate:refreshコマンドを使用してデータベースをリセットし、db:seedを使用してデータ埋め込みを実行する必要があります.
$ php artisan migrate:refresh
$ php artisan db:seed
UserTable Seederデータベースのパディングファイルを個別に指定する場合は、次のことができます.
$ php artisan migrate:refresh
$ php artisan db:seed --class=UsersTableSeeder
次のコマンドを使用して、データベースのリセットと塗りつぶしを同時に実行することもできます.
$ php artisan migrate:refresh --seed