laravel - 函数 Database\Seeders\DatabaseSeeder::Database\Seeders\{closure}() 的参数太少
问题描述
我想测试我的数据库,我已经制作了工厂,以下是我的播种器文件中的代码
public function run()
{
Category::factory()->count(10)->create();
User::factory()
->has(Profile::factory()->state(function (array $attributes, User $user) {
return ['user_id' => $user->id];
}))
->has(Post::factory()->count(50)
->state(function (array $attributes, User $user, Category $category) {
return ['user_id' => $user->id, 'category_id' => $category->id];
})
->has(Comment::factory()->count(3))
->state(function (array $attributes, User $user, Post $post) {
return ['user_id' => $user->id, 'category_id' => $post->id];
}))
->create();
}
我想创建一些类别和 1 个或多个用户,并附上个人资料、帖子和评论。有人可以检查我的代码是否正确,因为它给出了以下错误:
函数 Database\Seeders\DatabaseSeeder::Database\Seeders{closure}() 的参数太少,在 D:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Factories\Factory 中传递了 2 个.php 在第 422 行,预计正好 3
在 D:\xampp\htdocs\blog\database\seeders\DatabaseSeeder.php:28 24▕ ->has(Profile::factory()->state(function (array $attributes, User $user) { 25▕ return [ 'user_id' => $user->id]; 26▕ })) 27▕ ->has(Post::factory()->count(50) ➜ 28▕ ->state(function (array $attributes, User $ user, Category $category) { 29▕ return ['user_id' => $user->id, 'category_id' => $category->id]; 30▕ }) 31▕ ->has(Comment::factory() ->count(3)) 32▕ ->state(function (array $attributes, User $user, Post $post) {
1
D:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Factories\Factory.php:422 Database\Seeders\DatabaseSeeder::Database\Seeders{closure}(Object(App\Models \用户))2
D:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Collections\Traits\EnumeratesValues.php:741 Illuminate\Database\Eloquent\Factories\Factory::Illuminate\Database\Eloquent\Factories{closure} (对象(闭包))
解决方案
您的第二次和第三次关闭存在问题:
->state(function (array $attributes, User $user, Category $category)
您不能期望超过$attributes
并创建父模型($user
在这种情况下)。这个$category
参数会导致问题,你需要在闭包之外获取这个对象。
推荐阅读
- r - 子集群内计数汇总报告
- bash - 如何在 Bash 中将 curl 输出存储在多个变量中
- html - 为什么 nth-child(1) 改变两个段落而不是一个
- javascript - 使用函数慢慢增加背景颜色的数量
- bash - 在 bash 脚本中按名称查找最大的文件
- python - JSON 使用嵌套的自定义对象序列化字典
- air - 将 Adobe Flex Web 应用程序迁移到 Adobe AIR 包应用程序 - ExternalInterface.call 失败
- kotlin - 将 json 模式动态转换为 kotlin 数据类
- php - php购物车,堆栈数量
- python-3.x - 在 Python3 asyncio 中与子进程通信