シーダーの作成
1 |
php artisan make:seeder シーダー名 |
下記のディレクトリにシーダーのファイルが生成されています。
1 |
database/seeds/シーダー名.php |
データの書き方
作成したシーダーの編集
先ほど作成したシーダー(例で言えばUsersTableSeeder)を下記のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php use Illuminate\Database\Seeder; class UsersTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { DB::table('users')->insert([ [ 'name' => 'あああ', 'email' => 'test5@test.com', 'password' => Hash::make('password123'), ], [ 'name' => 'いいい', 'email' => 'test6@test.com', 'password' => Hash::make('password123'), ] ]); } } |
DatabaseSeeder.phpを編集する。
下記のように作成したシーダーを読み込むように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { $this->call(UsersTableSeeder::class); } } |
composerのオートローダーを再作成する。
1 |
composer dump-autoload |
データを作成する。
1 |
php artisan db:seed |
大量データを作成するには?
seederに加えて下記の仕組みを使う必要があります。
- factory
- faker
factory
fakerでデータを記述する雛形になります。
faker
任意のダミーデータを作成する事ができます。
ファクトリを作成する。
1 |
php artisan make:factory ファクトリ名 |
下記のディレクトリにファイルが生成されます。
1 |
database/factories/ファクトリ名.php |
下記を書き換えます。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php /** @var \Illuminate\Database\Eloquent\Factory $factory */ use App\★Model; ←Modelをデータを用意する対象のモデルに書き換える。 use Faker\Generator as Faker; $factory->define(★Model::class, function (Faker $faker) { ←Modelをデータを用意する対象のモデルに書き換える。 return [ // ]; }); |
fakerを日本語化する
1 |
'faker_locale' => 'en_US', |
↓下記のように変更します。
1 |
'faker_locale' => 'ja_JP', |
fakerのデータを用意する。
下記のようなfakerで用意されている項目やメソッドを使用してデータを準備します。
1 2 3 4 5 6 |
$factory->define(ContactForm::class, function (Faker $faker) { return [ 'フィールド1' => $faker->name, 'フィールド2' => $faker->realText(50), ]; }); |
fakerで用意されているメソッド
メソッド名 | 説明 |
---|---|
realText(文字数) | 任意の日本語文字列を用意します。 |
unique() | 一意のデータにします。 |
randomElement | 任意の値を用意します。 |
numberBetween | 任意の間にある数字データを用意します。 |
fakerで用意されている項目
項目名 | 説明 |
---|---|
name | 任意の名前を用意します。 |
任意のemailを用意します。 | |
url | 任意のurlを用意します。 |
シーダーを作成してファクトリを呼び込みます。
データ件数に例えば10と指定すれば10件のダミーデータを生成する事が可能になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php use Illuminate\Database\Seeder; use App\Models\モデル名; class ContactFormSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { factory(モデル名::class,データ件数)->create(); } } |
DatabaseSeederに追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { $this->call(UsersTableSeeder::class); $this->call(任意のシーダー::class); ★追加する。 } } |
この記事へのコメントはありません。