Laravel 8 - Factory and Seeders - 何千ものダミーデータを即座に生成する
セットアップ : laravel アプリを作成し、データベースに接続します
.env を開いてデータベースを構成する
データベースにデータベース スキーマ laravel_api を作成します.
以下を使用してテーブルを生成します.
アプリを開き、フォルダーに移動します.app/database/factories で、laravel がテーブル ユーザーを使用してサンプル ファクトリーを既に作成していることがわかります.
将来ダミーユーザーを使用できるように、いくつかのマイナーな編集を行いましょう.パスワードを次のように変更しましょう.
では、まずはダミーデータを10サンプル作成してみましょう!
ターミナルに移動し、
次のように入力して入力します.
数千を生成するには、次のように 10 を任意の量に置き換えます.
最初に独自のモデル、移行、ファクトリ、およびシーダーを作成しましょう
app/database/migrations に移動し、「...create_todos_table」を開きます
移行のユーザーの外部キーである列 string、text、completed および created_by を追加しましょう.
次に、app/database/factories で TodoFactory を開いて、これを貼り付けましょう.
これが Todo テーブルのコンテンツのルールになります
app/database/factories/seeders に移動して TodoSeeder を開き、これを内部に貼り付けて 3000 の todo データを生成します.
シーダーを実行するには、最初に同じフォルダー内の DatabaseSeeder.php 内に貼り付けましょう.
ターミナルに移動し、その特定のシーダーを実行します.
内部のすべてのデータベース シーダーを実行するには、次のようにします.
composer create-project laravel/laravel laravel_api
.env を開いてデータベースを構成する
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_api
DB_USERNAME=root
DB_PASSWORD=
データベースにデータベース スキーマ laravel_api を作成します.
以下を使用してテーブルを生成します.
php artisan migrate
アプリを開き、フォルダーに移動します.app/database/factories で、laravel がテーブル ユーザーを使用してサンプル ファクトリーを既に作成していることがわかります.
将来ダミーユーザーを使用できるように、いくつかのマイナーな編集を行いましょう.パスワードを次のように変更しましょう.
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => bcrypt('password'), // password
'remember_token' => Str::random(10),
];
}
では、まずはダミーデータを10サンプル作成してみましょう!
ターミナルに移動し、
php artisan tinker
を使用します次のように入力して入力します.
\App\Models\User::factory()->count(10)->create();
Hurray! Just like that we instantaneously created 10 dummy data that we can use in our app, check the database and you will there are 10 rows added in there!
数千を生成するには、次のように 10 を任意の量に置き換えます.
\App\Models\User::factory()->count(10000)->create();
You now have 10000 users!
味を味わったので、自分で作ってみましょう!最初に独自のモデル、移行、ファクトリ、およびシーダーを作成しましょう
php artisan make:model Todo -mfs
app/database/migrations に移動し、「...create_todos_table」を開きます
移行のユーザーの外部キーである列 string、text、completed および created_by を追加しましょう.
Schema::create('todos', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->boolean('completed')->default(false);
$table->unsignedBigInteger('created_by');
$table->foreign('created_by')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
php artisan migrate
を実行して、データベースにテーブルを生成しましょう次に、app/database/factories で TodoFactory を開いて、これを貼り付けましょう.
public function definition()
{
return [
'title' => $this->faker->sentence,
'body' => $this->faker->paragraph,
'completed' => rand(0,1),
'created_by' => rand(1,10),
];
}
これが Todo テーブルのコンテンツのルールになります
app/database/factories/seeders に移動して TodoSeeder を開き、これを内部に貼り付けて 3000 の todo データを生成します.
namespace Database\Seeders;
use App\Models\Todo;
use Illuminate\Database\Seeder;
class TodoSeeder extends Seeder
{
public function run()
{
Todo::factory(3000)->create();
}
}
シーダーを実行するには、最初に同じフォルダー内の DatabaseSeeder.php 内に貼り付けましょう.
$this->call(TodoSeeder::class);
ターミナルに移動し、その特定のシーダーを実行します.
php artisan db:seed --class=TodoSeeder
Hurray! Now you have added 3000 rows of Todos in your database table instantly!
内部のすべてのデータベース シーダーを実行するには、次のようにします.
php artisan db:seed
This is a very useful function for setting up your laravel app specially when you are working with a team!
Reference
この問題について(Laravel 8 - Factory and Seeders - 何千ものダミーデータを即座に生成する), 我々は、より多くの情報をここで見つけました https://dev.to/dalelantowork/laravel-8-factory-and-seeders-generating-thousands-of-dummy-data-instantly-4mi2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol