Laravel 8工厂创建后的状态

13

Laravel 7的工厂拥有一个名为afterCreatingState()的方法,您可以在其中定义在将具有特定状态的模型保存到数据库后会发生什么。

$factory->afterCreatingState(App\User::class, 'active', function ($user, $faker) {
    // ...
});

Laravel 8 工厂没有这个方法,相反只有通用的 afterCreating() 方法。

public function configure()
{
    return $this->afterCreating(function (User $user) {
        //
    });
}

如何实现这种行为?

2个回答

36

可以在状态定义方法中直接定义这种行为。

public function active()
{
    return $this->state(function (array $attributes) {
        return [
            'active' => true,
        ];
    })->afterCreating(function (User $user) {
        // ...
    });
}

1
我认为,这不是你问题的答案。可能应该是对你问题的编辑。 - STA
6
不同意这绝对是一个答案,从投票数来看,这是一个有用的答案。直到看到你的评论,我才意识到他们回答了自己的问题。 - Nick

2
创建后 - 状态
public function active()
    {
        return $this->state([
            'active' => true,
        ])->afterCreating(function (Article $user) {
            // ...
        });
    }

配置模型工厂。
    public function configure()
    {
        return $this->afterCreating(function (User $user) {
            //
        });
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接