播种时Laravel ModelFactory错误

时间:2017-03-02 03:19:43

标签: php laravel laravel-5 laravel-5.4

我的ModelFactory:

<?php        

    $factory->define(App\Models\Customer::class, function (Faker\Generator $faker) {
        return [
            'name' => $faker->company,
            'email' => $faker->unique()->safeEmail,
            'status'=> $faker->numberBetween($min = 0, $max = 2),
            'slug'=> $faker->slug,
        ];
    });

数据库播种机

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {

        $customers= factory(App\Models\Customer::class, 100)->create();

    }
}

当我跑步时

php artisan db:seed

我收到错误

  [Symfony\Component\Debug\Exception\FatalThrowableError]
  Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting '
  ]'

我已经尝试了我能想到的一切,但找不到问题......

修改

我忘了提到前一天工作正常,然后在我开始添加更多ModelFactories(在单独的文件中)时“破了”。然后我放弃了所有的更改(从源代码控制),以100%确定我没有改变任何东西。唯一的另一个方面可能是我在.gitignore中有一些可能已经更新但没有回滚的内容:

/node_modules
/public/storage
/public/hot
/storage/*.key
/.idea
Homestead.json
Homestead.yaml

2 个答案:

答案 0 :(得分:1)

问题似乎就在这一行:

'status'=> $faker->numberBetween($min = 0, $max = 2),

应该是:

'status'=> $faker->numberBetween(0, 2),

答案 1 :(得分:0)

好的,所以我找到了原因并且对此感到非常愚蠢,但无论如何都要在这里张贴,以防有人跟随我的脚步。

问题是数据库/工厂文件夹中还有其他ModelFactories,似乎正在运行php artisan db:seed解析这些文件,即使它们未在{{>中引用 1}}类。其中一个文件的语法不正确,导致错误。

我意识到这一点的唯一方法是我在DatabaseSeeder中运行了factory-&gt; create方法,并且它引发的错误消息引用了其他工厂定义。

FWIW,然后我使用了here概述的方法来解决我的关系 - 出于问题中提到的原因......