「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Laravelファクトリーとシーダーを作成するためのクイックガイド

Laravelファクトリーとシーダーを作成するためのクイックガイド

2024 年 7 月 29 日に公開
ブラウズ:558

A Quick Guide to Creating Laravel Factories and Seeders

私は、学習演習、趣味のプロジェクト、現実世界のアプリケーションなど、自分のプロジェクト用に新しいファクトリーやシーダーを作成する必要があるたびに、Laravel ドキュメントに戻ることがよくあります (毎回同じアクションをするのは退屈です)。このプロセスを簡単にするために、必要なときにいつでも参照できるガイドを作成することにしました。これにより、時間を節約し、広範なドキュメントを検索する必要がなくなりました。このガイドが他の人の役に立てば、それは素晴らしいことです!

ユーザー/投稿の関係があると仮定しましょう。つまり、各ユーザーは 1 つ以上の投稿を持つことができ、各投稿は 1 人のユーザーに属します。
工場とは何ですか?

Laravel のファクトリーは、アプリケーションのテストデータを生成するクラスです。これはローカル開発およびステージング環境に役立ち、多くの利点をもたらします。 Laravel では、モデルごとにファクトリーを作成できます。
シーダーとは何ですか?

Laravel のシーダーは、シード クラスを使用してデータベースにデータを入力するために使用されます。これは、テスト目的で特に役立ちます。
新しい工場の生成

新しいファクトリを作成するには、次のコマンドを実行します:

php 職人 make:factory PostFactory

ファクトリ クラスは、database/factories ディレクトリの下にあります。以下はファクトリーを定義する例です:

public function definition(): array
{
    return [
        'title' => $this->faker->sentence,
        'content' => $this->faker->paragraph,
        'user_id' => User::factory(),
    ];
}

シーダーの生成

新しいシーダーを作成するには、次のコマンドを実行します:

php 職人 make:seeder PostSeeder

シーダー クラスは、database/seeders ディレクトリの下にあります。このクラス内の run 関数の例を次に示します:

public function run(): void
{
    Post::factory()
        ->count(20)
        ->create();
}

同じディレクトリに、DatabaseSeeder クラスがあります。すべてのシーダーが含まれていることを確認してください:

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

    // \App\Models\User::factory()->create([
    //     'name' => 'Test User',
    //     'email' => '[email protected]',
    // ]);

    $this->call([
        PostSeeder::class,
        ..,
        ..
    ]);
}

移行の実行とデータベースのシード

まず、データベースの移行を実行します:

php 職人の移行

次に、データベースをシードします:

php 職人 db:seed

これでテスト データが準備されました。楽しむ!

元々は私のブログに投稿されました!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/bn_geek/a-quick-guide-to-creating-laravel-factories-and-seeders-3o09?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3