PHP注意事项:数组到字符串的转换;数据库工厂

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中的数组到字符串转换 运行

我有一个人才模型,可以有许多我想使用数据工厂填充的教育。但是使用artisan tinker填充教育数据会导致“数组到字符串转换”。从我看到的情况来看,我并没有给出一个要转换成字符串的数组。以下是教育模式,迁移和工厂

错误消息

'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