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
コメント