LaravelのFakerを拡張する
DatabaseServiceProviderを継承したプロバイダを作成する
$ php artisan make:provider DatabaseServiceProvider
App\Providers\DatabaseServiceProvider.php
namespace App\Providers;
use Illuminate\Database\DatabaseServiceProvider as BaseDatabaseServiceProvider;
use Faker\Factory as FakerFactory;
use Faker\Generator as FakerGenerator;
use Illuminate\Database\Eloquent\Factory as EloquentFactory;
class DatabaseServiceProvider extends BaseDatabaseServiceProvider
{
/**
* Register the Eloquent factory instance in the container.
*
* @return void
*/
protected function registerEloquentFactory()
{
$this->app->singleton(FakerGenerator::class, function () {
return FakerFactory::create(config('app.faker_locale'));
});
$this->app->singleton(EloquentFactory::class, function ($app) {
$faker = $app->make(FakerGenerator::class);
$faker->addProvider(new Faker\FakerProvider($faker));
return EloquentFactory::construct($faker, database_path('factories'));
});
}
}
app.php
'faker_locale' => 'ja_JP',
'providers' => [
// Illuminate\Database\DatabaseServiceProvider::class,
App\Providers\DatabaseServiceProvider::class,
];
App\Providers\Faker\FakerProvider.php
namespace App\Providers\Faker;
use Faker\Provider\Base;
class FakerProvider extends Base
{
// 拡張したいものを定義
}