プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Laravel
  • 【Laravel】シーダー(テストデータの作成)
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Laravel】シーダー(テストデータの作成)

05.17

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

シーダーの作成

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 任意の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); ★追加する。
    }
}

スポンサーリンク
  • 2020 05.17
  • miyabisan2
  • コメントを書く
  • Laravel
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 05.06

    【Laravel】DBからデータを取得する(「コレクション型」、「クエリビルダー」、ページネーションなど)

  2. 2020 05.06

    【Laravel】「コントローラ」と「ルーティング」の基本、バリデーションの基本、「Form」のサーバー側の処理

  3. 2020 05.10

    【Laravel】「laravel-ui」について

  4. 2020 04.04

    【Laravel】「ディレクトリ構成」、「初期設定ファイル」、「artisanコマンド」

  5. 2020 05.06

    【Laravel】マイグレーションの基本、モデルの基本(リレーションなど)

  6. 2020 05.10

    【Laravel】「laravel-mix」、「webpack.mix.js」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Laravel】「laravel-ui」について

【Linux】「標準入出力」や「/dev/null」に…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー