简体   繁体   English

Laravel 5.1本地化工厂播种机

[英]Laravel 5.1 Localize Factory Seeder

I implemented a new factory to generate random data. 我实施了一个新工厂来生成随机数据。 But I want to have this random data in the format of de_DE. 但是我希望以de_DE的格式提供这个随机数据。 So usually I create a faker object first, but this is not the case in Laravel 5.1 with the new ModelFactory class. 所以通常我首先创建一个faker对象,但是在Laravel 5.1中使用新的ModelFactory类并不是这样。 How do I localize this then? 我如何本地化呢?

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

In order to change the default locale used by Faker, the easiest way is to simply override the FakerGenerator binding with your own concrete implementation: 为了更改Faker使用的默认语言环境,最简单的方法是使用您自己的具体实现覆盖FakerGenerator绑定:

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

On top of your AppServiceProvider.php file add the following lines: AppServiceProvider.php文件的顶部添加以下行:

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

For example, the above code will mean all Faker instances are created using the nl_NL provider, thus creating Dutch faker data. 例如,上面的代码将表示使用nl_NL提供程序创建所有Faker实例,从而创建Dutch faker数据。

Remember: this has to happen after the DatabaseServiceProvider has been executed, so make sure to put your own AppServiceProvider after all of the Laravel ServiceProviders in your config.php array. 请记住:这必须在执行DatabaseServiceProvider 之后发生,因此请确保在config.php数组中的所有Laravel ServiceProviders 之后放置自己的AppServiceProvider

Try 尝试

$factory->define(App\Models\AED::class, function($faker) {
    $faker->locale = "YOUR_LOCALE";
    ...
});

Add this either at the top of your ModelFactory.php or in your AppServiceProvider::register() method: 在ModelFactory.php的顶部或AppServiceProvider :: register()方法中添加它:

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

You must add Providers eg. 您必须添加提供商,例如。

$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
    ];
});

For now You can't set manualy Faker locale. 目前您无法设置manualy Faker区域设置。 It should be changed on Laravel Core 它应该在Laravel Core上更改

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在数据库播种器中将参数传递给laravel工厂? - How to pass parameters to laravel factory in database seeder? Laravel 将数据从播种机传递到工厂 - Laravel pass data from seeder to factory Laravel 中的模型工厂和数据库播种机有什么区别? - What is the difference between Model Factory and a DB seeder in Laravel? Laravel 8 播种机工厂:致电 null 上的成员 function count() - Laravel 8 Seeder Factory : Call to a member function count() on null 如何将 null 参数从播种机传递给 Laravel 工厂? - How to pass null argument to Laravel Factory from the seeder? Laravel 5.1 - 模型工厂错误种子 - Laravel 5.1 - Model Factory Error seed 无法在PHPUnit / Laravel 5.1中使用Factory - Imposible to use Factory in PHPUnit / Laravel 5.1 Laravel 5.1模型工厂种子错误 - Laravel 5.1 Model Factory Seed Error 为什么播种机中的哈希方法与控制器中的哈希方法不同? Laravel 5.1 - why is the hash-method in the seeder different from the hash-method in the controller? Laravel 5.1 在Laravel雄辩的数据库播种机/工厂中播种关系数据-类型错误-Arg 1应该是Eloquent \\ Model-给定集合 - Seeding relational data in Laravel eloquent database seeder / factory - Type error - Arg 1 should be Eloquent\Model - Collection given
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM