laravel 使用 Faker 数据填充
创建数据填充文件 php artisan make:seeder UsersTableSeeder;
打开文件编辑
编辑数据填充内容
运行文件生成模拟数据
1、为Faker指定中文支持
可通过在 config/app.php 增加如下配置使其支持中文:
‘faker_locale’ => ‘zh_CN’,
2、随机数
$faker->randomDigit;//生成0-9之间的随机数
$faker->randomDigitNotNull;//生成1-9之间的随机数
$faker->randomFloat(2, 0, 10);//生成浮点数,两位小数点,范围是0-10之间
$faker->numberBetween(0, 100);//生成随机整数,范围是0-100之间
$faker->randomElements([‘a’, ‘b’, ‘c’, ‘d’], 2);//返回数组中的随机两个元素
$faker->randomElement([‘aa’, ‘bb’, ‘cc’, ‘dd’]);//随机返回数组中的一个元素
3、特定字段
$faker->unique()->name; //不重复的名字
$faker->sentence(); //返回句子
$faker->text(200);//返回一段文本,最多只能含有200个字符
$faker->address;//地址(城市+区)
$faker->phoneNumber;//手机号码
$faker->email;//返回一个随机邮箱
$faker->userName;//用户名
$faker->password;//密码
$faker->imageUrl();//https://lorempixel.com/640/480/?93028
//生成图片并保存到本地 ‘/tmp/13b73edae8443990be1aa8f1a483bc27.jpg’
$image = $faker->image(’./tmp’, 320, 320);
4、日期时间
$faker->dateTime;//返回一个随机的DateTime对象
$faker->date(“Y-m-d H:i:s”, ‘now’);//指定格式返回时间,可选择最后截止时间
$faker->dateTimeBetween(‘2019-01-01’, ‘now’, ‘PRC’);//返回指定时间区间的DateTime对象,可选时区
$faker->dateTimeThisYear;//返回一个前一年内的DateTime对象
//转换格式
$faker->dateTimeThisYear(‘2021-01-01’)->format(‘Y-m-d’);
如果查出的数据是datetime类型的对象,想要转换成字符串显示则需要使用
$datetimeobj->format(“Y-m-d H:i:s.u”);
!!时间段 !!
s
t
a
r
t
a
t
=
C
a
r
b
o
n
:
:
c
r
e
a
t
e
F
r
o
m
T
i
m
e
s
t
a
m
p
(
start_at = Carbon::createFromTimestamp(
startat=Carbon::createFromTimestamp(faker->dateTimeBetween($startDate = ‘+2 days’, $endDate = ‘+1 week’)->getTimeStamp())->toDateTimeString();
$end_at= Carbon::createFromFormat(‘Y-m-d H:i:s’, $start_at)->addHours( $faker->numberBetween( 1, 2 ) )->toDateTimeString();
s
t
a
r
t
t
i
m
e
=
d
a
t
e
(
′
H
:
i
′
,
s
t
r
t
o
t
i
m
e
(
start_time = date('H:i',strtotime(
starttime=date(′H:i′,strtotime(start_at));
e
n
d
t
i
m
e
=
d
a
t
e
(
′
H
:
i
′
,
s
t
r
t
o
t
i
m
e
(
end_time = date('H:i',strtotime(
endtime=date(′H:i′,strtotime(end_at));
$time = $start_time . ‘-’ . $end_time;
1
2
3
4
5
!!生成日期数组 !!
$date = [];
$num =
f
a
k
e
r
−
>
r
a
n
d
o
m
D
i
g
i
t
N
o
t
N
u
l
l
;
f
o
r
(
faker->randomDigitNotNull; for(
faker−>randomDigitNotNull;for(i=0;
i
<
i<
i<num;$i++){
$date[] = $faker->dateTimeThisYear(‘2021-01-01’)->format(‘Y-m-d’);
}