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 3 years have passed since last update.

laravel テストデータ作成

0
Posted at

1,作成方法1

以下コマンドでテーブル用のSeederを作ります。

php artisan make:seed target_usersSeeder
seeders\target_usersSeeder.php
<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Ramsey\Uuid\Uuid;

class target_usersSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $names = [
            'taro' => '太郎',
            'jiro' => '次郎',
            'takesi' => 'タケシ'
        ];

        foreach ($names as $name_jp => $name_jp) {

            // \App\Models\target_users::create
            DB::table('target_users')->insert([
                'name' => $name_jp,
                'email' => $name_jp .'@example.com',
                'uuid' => Uuid::uuid4(),
                'password' => '$2y$10$92IX'
            ]);
        }
    }
}

target_usersSeederの変更が完了したら、DatabaseSeeder.phpに登録してコマンドを実行します。

DatabaseSeeder.php
    public function run()
    {
        $this->call(target_usersSeeder::class);
    }
php artisan migrate:fresh --seed

2、作成方法2

artisanコマンドからFactoryを作成する

php artisan make:factory TargetUser

artisanコマンド実行時にTargetUserを指定したので、$model変数にモデルのTargetUserクラスが指定されています。これで、ModelとFactoryが関連付けとFactoryのdefinitionメソッドを修正する。

TargetUserFactory.php
<?php

namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\TargetUser; //追加
use Ramsey\Uuid\Uuid;

/**
 * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Model>
 */
class TargetUserFactory extends Factory
{

    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = TargetUser::class;

    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'uuid' => Uuid::uuid4(),
        ];
    }

}

モデルの方にも必要な記載がります。

TargetUser.php
    // 変更可能なカラム
    protected $fillable = [
        'name',
        'uuid',
        'email',
        'teams',
        'katagaki',
        'tag',
        'created_at',
        'updated_at'
    ];

SeederでFactoryを使用する

database/seeders/DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        App\Models\TargetUser::factory(10)->create();

    }
}

Seederを実行して、実際にデータが登録されるか確認します。

php artisan db:seed
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?