微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel 8 - 一次调用多个工厂状态

如何解决Laravel 8 - 一次调用多个工厂状态

在 Laravel 8 之前似乎有一个选项可以同时排列不同的状态

$users = factory(App\User::class,5)->states('premium','delinquent')->make(); (编辑:我现在意识到这是将 2 个不同的状态应用到同一个工厂记录中)

虽然我似乎在 Laravel 8 中找不到与此相同的东西,但有人知道如何吗?

本质上,我试图调用一个链来创建具有不同状态的多个记录,例如:

User::factory()->verified()->unverified()->banned()->create()

结果:3个不同的用户一个已验证,一个未验证,一个禁止

可以用下面的代码来实现,只是看起来有点冗长

User::factory()->verified()->create();       
User::factory()->unverified()->create();       
User::factory()->banned()->create(); 

解决方法

1。摆脱状态,只使用序列

User::factory()
->count(3)
->state(new Sequence(
    ['status' => 'verified'],['status' => 'unverified'],['status' => 'banned'],))
->create()

2.使用变量作为函数

保留当前状态,但从预定义列表中动态访问它们。

$states = ['verified','unverified','banned'];
foreach ($states as $state) {
    User::factory()->$state()->create();
}

3.用手把每一个写出来。

类似于数字 2,但我们不使用循环。

User::factory()->verified()->create();
User::factory()->unverified()->create();
User::factory()->banned()->create();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。