1
/
5

【Laravel】ダミーデータ作成(factory)でよく使うfaker一⁠覧

Laravelの標準ライブラリであるfactoryとphpのライブラリのfakerを使用すれば、大量の異なる内容のダミーデータを簡単に作成することができます。
fakerのメソッドは大量にあるのですが、個人的によく使うものを紹介します!

ダミーデータ作成の準備

まずはダミーデータを作成するための環境を作ります。

記事のダミーデータを作成するという前提で進めていきます。

ダミーデータを日本語化するための「config\app.php」ファイルの言語設定を英語から日本語へ変更をします。

'faker_locale' => env('APP_FAKER_LOCALE', 'ja_JP'),

キャッシュのクリアをします。

php artisan cache:clear
php artisan config:clear

記事モデルを作成して、記事モデル専用のマイグレーションファイルとfactoryファイルを作成します。

php artisan make:model Article --migration --factory

上記コマンドを実行することで、下記ファイルが作成されます。
/Models/Article.php
/database/migrations/生成された日付_create_articles_table.php
/database/factories/ArticleFactory.php

「Article.php」ファイルでデータベースにデータ登録、更新を許可するカラムを指定します。

class Article extends Model
{
use HasFactory;

protected $fillable = [
'title',
'thumbnail',
'content',
'is_public',
];
}

「生成された日付_create_articles_table.php」ファイルでデータベースに登録するカラムを指定します。

public function up(): void
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('thumbnail');
$table->text('content');
$table->boolean('is_public');
$table->timestamps();
});
}

「ArticleFactory.php」ファイルでダミーデータを定義します。

public function definition(): array
{
return [
'title' => fake()->name(),
'thumbnail' => fake()->imageUrl(),
'content' => fake()->realText(250),
'is_public' => fake()->numberBetween(0, 1),
];
}

「/database/seeders/DatabaseSeeder.php」ファイルでダミーデータが登録されるようにします。

public function run(): void
{
// User::factory(10)->create();

User::factory()->create([
'name' => 'Test User',
'email' => 'test@example.com',
]);
\App\Models\Article::factory(20)->create();
}

下記コマンドを実行して、データベースとダミーデータの作成を行います。

php artisan migrate:fresh --seed

phpMyAdminで添付画像のようになっていることが確認できます。

phpMyAdminを使用できない方は、laravelのtinkerでも確認することができます。

php artisan tinker
> \App\Models\Article::all();

上記を実行すると下記のデータが閲覧できます。

= Illuminate\Database\Eloquent\Collection {#6066
all: [
App\Models\Article {#6068
id: 1,
title: "宇野 淳",
thumbnail: "https://via.placeholder.com/640x480.png/00dd33?text=ea",
content: "その実験じっけんかくひょうはみんなし)とおってしましょうはたがたがいながら、",
is_public: 0,
},
]

以上で下準備は終了になります。

よく使うfakerメソッド一覧

個人情報【名前】

fake()->name(),
// フルネーム(漢字) 例:田中 一郎
// 引数にmale若しくはfemaleを渡すと、男女を選択することできる
fake()->lastName(),
// 名(漢字) 例:田中
fake()->firstName(),
// 姓(漢字) 例:一郎
// 引数にmale若しくはfemaleを渡すと、男女を選択することできる
fake()->kanaName(),
// フルネーム(カタカナ) 例:タナカ イチロウ
// 引数にmale若しくはfemaleを渡すと、男女を選択することできる
fake()->lastKanaName(),
// 名(カタカナ) 例:タナカ
fake()->firstKanaName(),
// 名(カタカナ) 例:イチロウ
// 引数にmale若しくはfemaleを渡すと、男女を選択することできる
fake()->userName(),
// ユーザーネーム 例:tanaka.ichiro

個人情報【住所】

fake()->address()
// 住所 例:6284950 三重県松本市西区佐々木町坂本5-7-3 ハイツ原田101号
fake()->postcode(),
// 郵便番号 例:6284950
fake()->postcode1()
// 郵便番号1 例:628
fake()->postcode2(),
// 郵便番号1 例:4950
fake()->prefecture(),
// 都道府県 例:三重県
fake()->city(),
// 市 例:松本市
fake()->streetAddress(),
// 市以降 例:西区佐々木町坂本5-7-3
fake()->secondaryAddress(),
// 建物 例:ハイツ原田101号

個人情報【その他】

関数関数

fake()->unique()->safeEmail(),
// 重複しない(unique関数)メールアドレス 例:zmiyake@example.com
fake()->phoneNumber(),
// 電話番号 例:09-8538-7302
fake()->company(),
// 会社名 例:株式会社 松本

日付

fake()->dateTime(), 
// 日時 例:2012-01-07 03:02:59
fake()->dateTime()->format('Y年m月d日 H時i分s秒'),
// フォーマット指定 例:2012年01月07日 03時02分59秒
fake()->date(),
// 日付 例:2012-01-07
fake()->date('Y年m月d日'),
// フォーマット指定 例:2012年01月07日
fake()->time(),
// 時間 例:03:02:59
fake()->time('H時i分s秒'),
// フォーマット指定 例:03時02分59秒
fake()->dateTimeBetween('-1 year', '+1 year'),
// 日時範囲指定(1年前後) 例:2025-05-29 03:17:28
fake()->dateTimeBetween('-1 year', '+1 year')->format('Y年m月d日 H時i分s秒'),
// フォーマット指定 例:2025年05月29日 03時17分28秒

文章

fake()->realText(10),
// 日本語対応の文章 引数は文字数で省略可能
fake()->sentence(8),
// 英語の文章(タイトル) 引数は文字数で省略可能
fake()->paragraph(10),
// 英語の文章(本文) 引数は文章数で省略可能

数字

fake()->randomNumber(),
// 数字 例:989076654、7、129543など
fake()->randomNumber(8, true),
// 数字(9桁までの桁数指定) 例:82916041、21720805など
fake()->numberBetween(10, 20),
// 数字(範囲指定) 例:10、16など

fake()->randomFloat(),
// 数字(小数点) 例:896.71099438
fake()->randomFloat(2),
// 数字(小数点の桁数指定) 例:5.86、91879735.38など
fake()->randomFloat(2, 10, 20),
// 数字(小数点の桁数指定(2桁)/整数の範囲指定(10~20))
// 例:14.43、17.56など

その他

fake()->url()
// URL 例:http://wakamatsu.org/
fake()->imageUrl(),
// 画像URL 例:https://via.placeholder.com/640x480.png/006644?text=sit
fake()->randomElement(['a', 'b', 'c', 'd']),
// 配列からランダムに取得する 例:a

おわりに

factoryとfakerはどの案件でも使うと思いますので、早めに理解を深めたい要素の1つです。
他にもまだまだ便利なfakerメソッドがたくさんあると思いますので、良いなと思うメソッドがありましたら、都度更新していこうと思います。

ロジカルスタジオではエンジニアを募集しています。

興味を持っていただけたら、是非採用サイトからご応募ください!

PHPエンジニア
即戦力募集中!PHPで世界をちょっとよくしたいエンジニアをWanted!
ロジカルスタジオは、テクノロジーとデザインの視点からクライアントの課題解決をめざす、大阪のクリエイティブプロダクションです。 クライアントの期待を超えて「もっと良くなる、を見つける」のが私たちのスタイル。企画・提案からデザイン制作・システム構築、運用、改善提案をワンストップで行えるのが一番の強みです。近年ではその実績と品質が評価され、案件も急増しています。 代表の古川が掲げる企業理念は「絆を大切に、周りの人を豊かにし、社会に貢献する」。 私たちはこのミッションを推進するため、「新しい技術へのチャレンジ精神」を軸に、「切磋琢磨する仲間」と「働きやすい職場環境」を整え、「成長と可能性を大切にする風土」を育ててきました。 2019年9月に増床し、外部向けのセミナーにも活用できるカンファレンスルームを拡充。スタッフによる公式ブログや、マスコットキャラクター「ロージー&カール」によるTwitterなど、情報発信も強化しています。 可能性の芽をすくい上げられるこの場所を、より大きくしていきたい。 私たちと一緒に、このビジョンを実現しませんか。
株式会社ロジカルスタジオ


Invitation from 株式会社ロジカルスタジオ
If this story triggered your interest, have a chat with the team?
株式会社ロジカルスタジオ's job postings
3 Likes
3 Likes

Weekly ranking

Show other rankings
Like ゆっきー's Story
Let ゆっきー's company know you're interested in their content