Laravel 播种时 ModelFactory 错误
Laravel ModelFactory error when seeding
我的模型工厂:
<?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 '
]'
能想到的都试过了,还是找不到问题所在...
编辑:
我忘了提到这在一天前工作正常,然后 "broke" 当我开始添加更多 ModelFactories(在单独的文件中)时。然后,我放弃了所有更改(来自源代码管理),以 100% 确定我没有更改任何内容。唯一的其他方面可能是我在 .gitignore 中有一些东西可能已经更新但没有回滚:
/node_modules
/public/storage
/public/hot
/storage/*.key
/.idea
Homestead.json
Homestead.yaml
看来问题出在这一行:
'status'=> $faker->numberBetween($min = 0, $max = 2),
应该是:
'status'=> $faker->numberBetween(0, 2),
好吧,所以我找到了原因并对此感到非常愚蠢,但无论如何还是将其张贴在这里以防有人步我的后尘。
问题是 database/factories 文件夹中还有其他 ModelFactories,似乎 运行 php artisan db:seed
也解析了这些文件,即使它们是未在 DatabaseSeeder
class 中引用 。其中一个文件的一对多语法不正确,这是导致错误的原因。
我意识到这一点的唯一方法是我 运行 php artisan tinker
中的工厂->创建方法,它抛出的错误消息引用了另一个工厂定义。
FWIW,然后我使用 概述的方法处理我的人际关系 - 出于问题中提到的原因...
我的模型工厂:
<?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 '
]'
能想到的都试过了,还是找不到问题所在...
编辑:
我忘了提到这在一天前工作正常,然后 "broke" 当我开始添加更多 ModelFactories(在单独的文件中)时。然后,我放弃了所有更改(来自源代码管理),以 100% 确定我没有更改任何内容。唯一的其他方面可能是我在 .gitignore 中有一些东西可能已经更新但没有回滚:
/node_modules
/public/storage
/public/hot
/storage/*.key
/.idea
Homestead.json
Homestead.yaml
看来问题出在这一行:
'status'=> $faker->numberBetween($min = 0, $max = 2),
应该是:
'status'=> $faker->numberBetween(0, 2),
好吧,所以我找到了原因并对此感到非常愚蠢,但无论如何还是将其张贴在这里以防有人步我的后尘。
问题是 database/factories 文件夹中还有其他 ModelFactories,似乎 运行 php artisan db:seed
也解析了这些文件,即使它们是未在 DatabaseSeeder
class 中引用 。其中一个文件的一对多语法不正确,这是导致错误的原因。
我意识到这一点的唯一方法是我 运行 php artisan tinker
中的工厂->创建方法,它抛出的错误消息引用了另一个工厂定义。
FWIW,然后我使用