はじめに
外部キーのあるFactoryに対し、外部キーを設定し、リレーションする方法を調べてみました。
QuestionFactory
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\User;
class QuestionFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'question' => $this->faker->text(),
'answer' => $this->faker->text(),
'share' => false,
'user_id' => function() {
return User::factory()->create()->id;
},
];
}
}
TestControllerTest
public function setUp(): void
{
parent::setUp();
//userFactory作成
$this->user = User::factory()->create();
//user_idを作成したuserFactoryのidで上書き
$this->question = Question::factory()->create(['user_id' => $this->user->id]);
}
参考