Laravel 数据填充国内手机号码、地址等
使用数据填充器让laravel的测试变的方便,我们经常要添加国内的手机号码等,通过查看源码发现,有 Address
, Color
, Company
, DateTime
, Internet
, Payment
, Person
, PhoneNumber
这些本地化Provider
可以支持中文。
用法如下:
$factory->define(\App\Admin::class, function (Faker $faker) {
return [
'address' =>$faker->address,
'color' => $faker->colorName,
'company' => $faker->company,
'date_time' =>$faker->dateTime,
'email' => $faker->email,
'payment' => $faker->bank(),
'username' => $faker->userName,
'name' => $faker->name,
'first_name' => $faker->firstName,
'mobile' => $faker->phoneNumber,
];
});
Illuminate\Database\Eloquent\Collection {#3137
all: [
App\Admin {#3133
address: "西安高新开发区",
color: "天青石蓝",
company: "太极传媒有限公司",
date_time: DateTime @718532579 {#3131
date: 1992-10-08 16:22:59.0 Asia/Shanghai (+08:00),
},
email: "qvoluptates@sina.com",
payment: "中国民生银行",
username: "aperiam_error",
name: "苟军",
first_name: "颖",
mobile: "13061754492",
},
],
}
其中Person
会获取中文姓名和username
的格式, Internet
会影响获取email
时的数据。
在laravel中默认使用en_US
的Provider
,但是在 DatabaseServiceProvicer
中通过获取配置信息可以指定加载的Locale
。
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' => 'zh_CN',
即可。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: