Laravel seedingでDBへ初期データを自動投入する
マイグレーションファイルを作成し、マイグレーション実行しDBにテーブルがあることを確認した後、
次にseederを使って初期データを追加する作業に移ります。
このseederというものを使えば簡単にDBへ初期データを入れることができます。
アジェンダ
1.Seedファイルの生成
2.シーダークラスの定義
3.シーダクラスをコールする為の設定
4.オートローダ再生成
5.シーディング実行
6.マイグレーションとシーディングでデータベースを再構築する
Seedファイルの生成
まず初めに投入するデータを記述するseedファイルを生成します。
その前に公式にならって、シーダクラス名を決めます。
"App"TableSeederのようにTableSeederが後に続いたシーダクラス名にします。
シーダー生成のartisanコマンド
php artisan make:seeder AppTableSeeder
そうすると
laravel/database/seeds 配下に AppTableSeeder.phpが生成されます。
シーダークラスの定義
laravel/database/seeds/AppTableSeeder.php
run()メソッドにデータを投入する記述を行う。
use Illuminate\Database\Seeder;
class AppTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$param = [
'name' => Str::random(10),
'email' => Str::random(10).'@yamada.jp',
'password' => bcrypt('password'),
'birthday' => '2000/01/01',
];
DB::table('users')->updateOrInsert($param);
$param = [
'name' => Str::random(10),
'email' => Str::random(10).'@yamada.jp',
'password' => bcrypt('password'),
'birthday' => '2000/01/01',
];
DB::table('users')->updateOrInsert($param);
$param = [
'name' => Str::random(10),
'email' => Str::random(10).'@yamada.jp',
'password' => bcrypt('password'),
'birthday' => '2000/01/01',
];
DB::table('users')->updateOrInsert($param);
}
}
シーダークラスをコールするための設定
シーダクラスの定義が完了したら、このシーダークラスをシーディング実行時にコールできるようにします。
laravel/database/seeds/DatabaseSeeder.php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call([
AppTableSeeder::class,
]);
}
}
オートローダ再生成
composerのオートローダーを再生成します。
composer dump-autoload
シーディング実行
それでは早速シーディングの実行をしていきます。
Laravelのルートディレクトリに移動し、コマンドを叩きます。
php artisan db:seed
実行が完了したら、実際にmysqlでデータを確認してみます。
ここまででシーダクラスに手動で情報をインサートし、シーディングを行うことができました。
参考文献
PHPフレームワーク Laravel入門
Author And Source
この問題について(Laravel seedingでDBへ初期データを自動投入する), 我々は、より多くの情報をここで見つけました https://qiita.com/Ryosuke27/items/ce17a711ebc61212ef44著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .