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

试图将变量从DatabaseSeeder传递到Laravel 8中的工厂;有新语法吗?

如何解决试图将变量从DatabaseSeeder传递到Laravel 8中的工厂;有新语法吗?

试图将变量从DatabaseSeeder传递到Laravel 8中的工厂;有新语法吗? 我需要通过foreach遍历我的用户。我看到了很多将变量作为数组传递给工厂的示例

// DatabaseSeeder.PHP
foreach ($users as $user) {
$round = Round::factory()->create(['user' => $user,]);
}

我也看到了这个:

$round = Round::factory()->create($user);

这些例子大多数都已经有好几年了,但其中一个是19年9月。但是,这两种方法都不适合我。我得到:

// Terminal: PHP artisan db:seed
Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Undefined variable: user",…

我的foreach循环肯定会产生有效的$ user(通过dd($ user)确认)。我的工厂定义看起来像这样:

// RoundFactory.PHP
return [
    'user_id' => $user,'other_field' => $this->faker-> …something,other fields …
]

那么还有其他方法可以做到这一点吗?谢谢。

解决方法

我建议阅读Link 1Link 2。您可以创建UserFactory并实现definition方法,将HasFactory特征添加到模型中,然后运行它(x-您想要多少):

User::factory()->times(x)->make();

那只是做到这一点的一种选择。

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