Laravel: 播种数据库时出错(数组到字符串的转换)

Laravel: error while seeding the database (Array to string conversion)

我正在尝试为数据库设定种子。按照用户示例,我创建了一个 Emploi(工作)播种机,但出现错误。

种子文件

$factory->define(App\Emploi::class, function (Faker\Generator $faker) {

    return [
        'JOBURL' => $faker->name,
        'SALARYMAX' => ',000',
        'SALARYMIN' => ',000',
        'SALARYTYPE' => 'annual',
        'NAME' => $faker->words(5),
        'POSITION' => $faker->words(4),
        'JOBREF' => str_random(10),
        'JOB_SUMMARY' => $faker->text,
        'tweeted' => false,
        'POSTDATE' => $faker->dateTime(),
        'EXPIRYDATE' => $faker->dateTime(),
        'slug' => str_random(10),
    ];
});

异常

[ErrorException]
  Array to string conversion

产出

 [Illuminate\Database\QueryException]
  Array to string conversion 
  (SQL: insert into `emplois` 

  (`JOBURL`, `SALARYMAX`, 
  `SALARYMIN`, `SALARYTYPE`, `NAME`, `POSITION`, 
  `JOBREF`, 
  `JOB_SUMMARY`, 
  `tweeted`, `
  POSTDATE`, `EXPIRYDATE`, `slug`, 
  `updated_at`, `created_at`) 
  values 
  (Lawson Boyer II, ,000,
  ,000, annual, rerum, voluptates, 
  LCw8d67S8w, 
  Nulla qui corporis sequi. 
  Eum nostrum culpa ut culpa velit. 
  Molestiae cumque doloremque et ex., 
  0, 
  1972-11-09 12:00:07, 1997-10-04 09:08:17, 6FxxCHFus6,
  2017-05-28 03:18:52, 2017-05-2  8 03:18:52)

  )

数据库播种器

factory(App\Emploi::class, 50)->create();

尝试 implode('',$faker->words(5)) 而不是 $faker->words(5),因为 laravel 期望您的值是数字或字符串类型。

Faker 库有一些方法可以 return array 而不是 string。 laravel 在这里期望的是一个字符串。因此,您可以使用 PHP 的 implode 函数来创建字符串,或者将整个 $faker->words() 方法换成 $faker->sentence()。这是方法签名:

sentence($nbWords = 6, $variableNbWords = true)

干杯!