Laravel 5.1本地化工厂播种机

ses*_*360 6 php database laravel

我实施了一个新工厂来生成随机数据.但是我希望以de_DE的格式提供这个随机数据.所以通常我首先创建一个faker对象,但是在Laravel 5.1中使用新的ModelFactory类并不是这样.我如何本地化呢?

$factory->define(App\Models\AED::class, function($faker) {
    return [
        'owner' => $faker->company,
        'street' => $faker->streetAddress,
        'latitude' => $faker->latitude,
        'longitude' => $faker->longitude
    ];
});
Run Code Online (Sandbox Code Playgroud)

小智 21

要更改Faker使用的默认语言环境,最简单的方法是FakerGenerator使用您自己的具体实现覆盖绑定:

// AppServiceProvider.php
$this->app->singleton(FakerGenerator::class, function () {
    return FakerFactory::create('nl_NL');
});
Run Code Online (Sandbox Code Playgroud)

AppServiceProvider.php文件顶部添加以下行:

use Faker\Generator as FakerGenerator;
use Faker\Factory as FakerFactory;
Run Code Online (Sandbox Code Playgroud)

例如,上面的代码将表示使用nl_NL提供程序创建所有Faker实例,从而创建Dutch faker数据.

请记住:这必须在执行DatabaseServiceProvider 之后发生,因此请确保在阵列中的所有Laravel ServiceProviders AppServiceProvider 之后放置自己的config.php.

  • 这应该是这个问题的正确答案.Laravel具有必须在创建之前定义的松散组件,以便不会丢失创建垃圾对象的性能.只有一张纸条.包括路径别名,如'Faker\Factory as FakerFactory`和`Faker\Generator as FakerGenerator`,以便此示例工作 (4认同)