0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】Seederを使ってダミーデータを作成する方法

Posted at

今回はLaravelでSeederを用いてダミーデータを簡易的に作成する方法を紹介します。

開発環境

PHP 7.3.9
MAMP 5.7
Mysql 5.7.26
Laravel 6.20.7
Composer 2.0.8

下準備

Seederを作成するためにプロジェクトを作ります。

$ composer create-project laravel/laravel seeder_test --prefer-dist "6.*"
$ cd seeder_test
$ composer require laravel/ui "1.x" --dev
$ php artisan ui bootstrap --auth
$ npm install && npm run dev

次にDB接続。
phpMyAdmin等で適宜DBとuserアカウントを作成し、
.envファイルに環境変数を設定して、DB接続をします。

$ php artisan migrate

--authで認証機能が追加されるのでusersテーブルが作られます。

Seederでダミーデータを作成する

ダミーデータの設定

usersテーブルが作成されたのが確認できたらまずUsesTableSeeder.phpというファイルを作成しましょう。

$ php artisan make:seeder UsersTableSeeder

database/seeds配下にファイルが生成されます。
public function run (){}にダミーデータを設定します。

database/seede/UsersTableSeeder
<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder 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' => Hash::make('password'),
        ]);
    }
}

上記はランダムな10文字でuserの名前をメールアドレスを生成するように記述しています。
passwordに関しては暗号化が必須のためHash::make()を記述します。

ちなみに自分で指定した値にすることも可能です。

database/seede/UsersTableSeeder
<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            [
            'name' => '太郎',
            'email' => 'taro@sample.com',
            'password' => Hash::make('password')
            ], [
            'name' => '二郎',
            'email' => 'jiro@sample.com',
            'password' => Hash::make('password')
            ], [
            'name' => '三郎',
            'email' => 'saburo@sample.com',
            'password' => Hash::make('password')
            ]
        ]);
    }
}

連想配列で複数設定してみました。

次にDatabaseSeeder.phpでUsersTableSeederを紐づける必要があるので以下のように設定します。

database/seeds/DatabaseSeeder.php
<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call(UsersTableSeeder::class);
    }
}

他にSeederファイルを作成した場合は適宜、紐付けが必要になるので注意してください。

composerのオートローダを再生成

シーダクラスを書き換えた場合はターミナルで下記のを実行しなければなりません。

$ composer dump-autoload

DBにダミーデータを保存する

以下のコマンドを実行すればDBにダミーデータが保存されているはずです。

$ php artisan db:seed

もしすでにデータが保存されている状態で上記コマンドを実行する場合はエラーが発生するはずなので、

$ php artisan migrate:refresh

を実行すればDBのデータをリセットしてからseedファイルで設定したダミーデータを保存してくれます。

DBを確認してデータが保存されていれば完了です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?