Laravel 5.1本地化工厂播种机

时间:2015-06-10 16:45:27

标签: 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
    ];
});

4 个答案:

答案 0 :(得分:21)

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

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

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

use Faker\Generator as FakerGenerator;
use Faker\Factory as FakerFactory;

例如,上面的代码意味着所有Faker实例都是使用nl_NL提供程序创建的,从而创建了荷兰的faker数据。

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

答案 1 :(得分:4)

尝试

CELERYBEAT_SCHEDULE = {
    'send_queued_messages_every_5_seconds': {
        'task': 'myapp.tasks.send_queued_messages', 
        'schedule': timedelta(seconds=5),
        },
    }

答案 2 :(得分:1)

在ModelFactory.php的顶部或AppServiceProvider :: register()方法中添加它:

$this->app->singleton(\Faker\Generator::class, function () {
    return \Faker\Factory::create('de_DE');
});

答案 3 :(得分:0)

您必须添加提供商,例如

$factory->define(Mylead\Models\UserDetails::class, function($faker) {

    $faker->addProvider(new Faker\Provider\pl_PL\Person($faker));
    $faker->addProvider(new Faker\Provider\pl_PL\Payment($faker));

    return [
        'name' => $faker->name,
        'surname' => $faker->lastname,
        'street' => $faker->streetName,
        'city' => $faker->city,
        'post_code' => $faker->pesel,
        'pesel' => $faker->pesel,
        'paypal' => $faker->email,
        'bank_name' => $faker->bank,
        'bank_account' => $faker->bankAccountNumber,
        'created_at' => $faker->dateTime
    ];
});

目前您无法设置manualy Faker区域设置。它应该在Laravel Core上更改