Laravel/faker с использованием недопустимых имен столбцов

Я запускаю проект Laravel 5.4, созданный всего три дня назад.

У меня есть это в моем ModelFactory.php:

$factory->define(\App\Models\Definition::class, function (Faker\Generator $faker) {
$tag = "tag";
$category = "cat";

return [
    'name' => $faker->words,
    'description' => $faker->realText,
    'tags' => $tag,
    'price' => $faker->numberBetween(500, 50000),
    'category' => $category
];
});

И в моем DatabaseSeeder.php run():

DB::table('definitions')->truncate();
factory(Definition::class, 200)->create();

Но когда я запускаю db:seed, я продолжаю получать:

SQLSTATE [HY000]: общая ошибка: в определениях 1 таблицы нет столбца с именем 0 (SQL: вставить в «определения» («0», «1», «2») выбрать quia как «0», нет, арок не было налево, и вся мокрая, сердитая и неудобная. Первое, что у меня есть totag' (Алисе не было причин стыдиться себя за то, что она задавала такое правило на шествиях;. как "1", 1302 как "2" union all выбрать кошку как "0", 2017-03-17 10:51:53 как "1", 2017-03-17 10:51:53 как "2" uni для всех выбрать ? как "0", ? как "1", ? как "2" союз все выбрать ? как "0", ? как "1", ? как "2" союз все выбрать ? как "0", ? как "1", ? как "2" союз все выбрать ? как "0", ? как "1", ? как "2" объединение всех выбрать ? как "0", ? как "1", ? как "2")

Схема моей таблицы:

Schema::create('definitions', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('description')->nullable();
        $table->integer('price');
        $table->json("tags");
        $table->string('category');
        $table->unsignedInteger('x_id')->nullable(); 
        $table->nullableTimestamps();

У меня есть $guarded = []; в моем классе определения. Я думаю, может быть, это какой-то мошеннический баг, потому что у меня нет идей.


person shalvah    schedule 17.03.2017    source источник


Ответы (1)


 'description' => $faker->realText

Это должна быть функция.

 'description' => $faker->realText()

Также

 'name' => $faker->words

должна быть функцией, но она возвращает массив, а не строку. Вы могли бы использовать

 'name' => $faker->name()

or

 'name' => $faker->sentence(3)

Если вы просто хотите предложение из 3 слов.

person Tomasz Rup    schedule 17.03.2017