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 1 year has passed since last update.

laravel Factoryを用いてテストデータを作成する(準備編)

Last updated at Posted at 2022-07-24

概要

  • laravelにてFactoryを用いてテストデータを作成する方法の準備をまとめる。

前提

  • マイグレーションファイルの記載及びマイグレート、モデルクラスの最低限の作成が完了していること。

方法

  1. Factoryの準備

    1. artisanコマンドを用いてファクトリークラスを作成する。

    2. Factoryを下記のように記載する。

      FooFactory.php
      <?php
      
      namespace Database\Factories\Content;
      
      use Illuminate\Database\Eloquent\Factories\Factory;
      use App\Models\モデルクラス;
      
      /**
       * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Model>
       */
      class ContentFactory extends Factory
      {
          protected $model = モデルクラス::class;
      
          /**
           * Define the model's default state.
           *
           * @return array
           */
          public function definition()
          {
              return [
                  'カラム名' => 投入するデータ,
              ];
          }
      }
      
      
    3. definition()関数の例を下記に記載する。(contentカラムにStrファサードを用いて255文字のランダムな文字列を格納する例を記載)格納するデータはもちろん当該カラムの制約に一致しているものである必要がある。

      FooFactory.php
      use Illuminate\Support\Str;
      
      public function definition()
      {
          return [
              'content' => Str::random(255),
          ];
      }
      
  2. モデルクラスの記載

    1. 当該のモデルクラスを開き下記の関数を記載する。(静的関数なので注意)準備はこれで完了となる。

      Foo.php
      public static function newFactory()
      {
          return 先に定義したFacotryクラス::new();
      }
      
    2. 次はlaravel Factoryを用いてテストデータを作成する(使用編)で使い方を説明する。

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?