阅读(4696) (10)

Laravel 8 定义内的关系

2021-07-08 16:55:47 更新

您可以将关系附加到工厂定义中的模型。例如,如果您想在创建 Post 时创建一个新的 User 实例,您可以这样做:

    use App\Models\User;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'user_id' => User::factory(),
            'title' => $this->faker->title,
            'content' => $this->faker->paragraph,
        ];
    } 

如果关系的列取决于定义它的工厂,您可以提供一个接受求值属性数组的回调:

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'user_id' => User::factory(),
            'user_type' => function (array $attributes) {
                return User::find($attributes['user_id'])->type;
            },
            'title' => $this->faker->title,
            'content' => $this->faker->paragraph,
        ];
    }