PHP注意事项:数组到字符串的转换;数据库工厂
我有一个人才模型,可以有许多我想使用数据工厂填充的教育。但是使用artisan tinker填充教育数据会导致“数组到字符串转换”。从我看到的情况来看,我并没有给出一个要转换成字符串的数组。以下是教育模式,迁移和工厂 错误消息PHP注意事项:数组到字符串的转换;数据库工厂,php,laravel,laravel-6,faker,factories,Php,Laravel,Laravel 6,Faker,Factories,我有一个人才模型,可以有许多我想使用数据工厂填充的教育。但是使用artisan tinker填充教育数据会导致“数组到字符串转换”。从我看到的情况来看,我并没有给出一个要转换成字符串的数组。以下是教育模式,迁移和工厂 错误消息 'qualification_field' => $faker->sentence PHP注意:第360行的C:/Core/../vendor/laravel/framework/src/illumb/Support/Str.PHP中的数组到字符串转换 运行
'qualification_field' => $faker->sentence
PHP注意:第360行的C:/Core/../vendor/laravel/framework/src/illumb/Support/Str.PHP中的数组到字符串转换
运行此语句时收到
$talent->each(函数($talent){factory(App\Education::class)->创建(['talent\u id'=>$talent->id]);})
下面是我运行的修补程序命令
$talents = App\Talent::all()
$talents->each( function($talent) { factory(App\Education::class)->create(['talent_id' => $talent->id]); })
$talent->each(函数($talent){factory(App\Education::class)->create(['talent\u id'=>$talent->id]);})是原因,但我不明白为什么
例如,使用不同类模型的同一命令可以工作
$talents->each( function($talent) { factory(App\WorkExperience::class)->create(['talent_id' => $talent->id]); })
您的问题可能在于这段代码:
'talent_id' => factory(\App\Talent::class),
factory方法将返回人才类的数据数组,并尝试将其应用于人才id
,但失败
要纠正您的问题,请执行以下操作:
'talent_id' => function () { return factory(\App\Talent::class)->create()->id; }
这个问题最初是在论坛上发布的,我刚刚收到了解决方案
问题出在我的教育工厂:
'qualification_field' => $faker->words
$faker->words返回字符串数组。解决方法是使用$faker->句子
'qualification_field' => $faker->sentence
请将完整的错误消息添加到您从何处获得错误?谢谢您的回答,但这不是问题所在。如果这样做的话,我打赌它会创造新的人才,而不是恢复现有的人才。它会创造新的人才,这就是使用嵌套工厂的意义所在。但我很高兴你找到了答案。我没有接到假电话。
$factory->define(WorkExperience::class, function (Faker $faker) {
return [
'talent_id' => factory(\App\Talent::class),
'title' => $faker->word,
'employment_type' => $faker->word(['Internship', 'Part Time', 'Full Time']),
'company' => $faker->word,
'start_date_month' => rand(1, 12),
'start_date_year' => rand(1970, 2000),
'end_date_month' => rand(1, 12),
'end_date_year' => rand(1970, 2000),
'description' => $faker->paragraph,
];
});
'talent_id' => factory(\App\Talent::class),
'talent_id' => function () { return factory(\App\Talent::class)->create()->id; }
'qualification_field' => $faker->words
'qualification_field' => $faker->sentence