此答案仅适用于 LARAVEL <=5.1,或者当您想要使用许多不同的区域设置时,请参阅此答案,了解 Laravel >=5.2 中的解决方案。
要将区域设置与 Faker 一起使用,生成器需要使用该区域设置进行创建。
$faker = Faker\Factory::create('fr_FR'); // create a French faker
从伪造者文档:
如果未找到本地化的提供程序,则工厂回退到默认区域设置 (en_EN)。
默认情况下,Laravel 在 中绑定了 faker 实例的创建。用于绑定的确切代码是:EloquentServiceProvider
// FakerFactory is aliased to Faker\Factory
$this->app->singleton(FakerGenerator::class, function () {
return FakerFactory::create();
});
看起来Laravel没有办法修改它传递到工厂关闭的faker实例的区域设置,因为它不会向Faker传递任何参数。
因此,通过在工厂方法中使用自己的Faker实例,您将得到更好的服务。
$localisedFaker = Faker\Factory::create("fr_FR");
$factory->define(App\Flyer::class, function (Faker\Generator $faker) {
// Now use the localisedFaker instead of the Faker\Generator
// passed in to the closure.
return [
'zip' => $localisedFaker->postcode,
'state' => $localisedFaker->state,
];
});