fakerを使うときに毎回localeを指定するのが面倒だったので。
2017/05/29 追記
もっと簡単な方法ありました。
fakertのデフォルトのlocaleはconfigで管理できるようです。
fakerでgrepをかけていたときにたまたま見つけたのですが・・・
DatabaseServiceProvider::registerEloquentFactory
/**
* Register the Eloquent factory instance in the container.
*
* @return void
*/
protected function registerEloquentFactory()
{
$this->app->singleton(FakerGenerator::class, function ($app) {
return FakerFactory::create($app['config']->get('app.faker_locale', 'en_US'));
});
$this->app->singleton(EloquentFactory::class, function ($app) {
return EloquentFactory::construct(
$app->make(FakerGenerator::class), $this->app->databasePath('factories')
);
});
}
こんな感じでスッキリかけます
config/app.php
// fakerで使用するlocale
'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),
.env
APP_FAKER_LOCALE=ja_JP
動作確認
いいかんじ!!
$ php artisan tinker
app(\Faker\Generator::class)->name;
=> "浜田 香織"
ServiceProviderでサービスコンテナへ登録する
このやり方でも出来なくは無いですが無駄が多いです。
こちらを参照してください
DevEnviromentServiceProvider.php
/**
* Register the application services.
*
* @return void
*/
public function register() {
if (in_array(config('app.env'), [
'local',
'dev',
'testing'
])) {
// fakerのlocaleを日本語に固定する
$this->app->singleton(\Faker\Generator::class, function () {
return \Faker\Factory::create('ja_JP');
});
}
}