Я пытаюсь заполнить базу данных. Следуя примеру пользователя, я создаю сеялку Emploi (Job), но у меня ошибка.

Исходный файл

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

    return [
        'JOBURL' => $faker->name,
        'SALARYMAX' => '$50,000',
        'SALARYMIN' => '$40,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, $50,000,
  $40,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)

  )

DatabaseSeeder

factory(App\Emploi::class, 50)->create();
0
Papouche Guinslyzinho 28 Май 2017 в 06:29

2 ответа

Лучший ответ

В библиотеке Faker есть несколько методов, которые будут возвращать array вместо string. То, что ожидает Laravel здесь это строка. Таким образом, вы можете использовать функцию PHP implode для создания строки или заменить метод $faker->words() на $faker->sentence(). Вот подпись метода:

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

Ура !

2
Exotical 28 Май 2017 в 03:45

Попробуйте implode('',$faker->words(5)) вместо $faker->words(5), поскольку laravel ожидает, что ваше значение будет числовым или строковым.

2
mighTY 28 Май 2017 в 03:43