Faker:好用的数据填充库
faker是一次意外的收获,当时想找一个随机生成字符进行填充数据表的方法,就看到faker这样一个项目。
安装
依赖库原因,只能通过composer方式下载安装
composer require fzaninotto/faker
已经不止一次的碰到这样的需要通过composer安装的库了。因为暂时主要还是基于ci框架开发,所以只能将其放置到ci library中使用,达不到composer集成化到项目中的效果。yii2和laravel框架这方面更加倚重于composer,所以之后如果要扩展学习框架知识的话,还得把composer的使用熟练掌握。
下载后将vendor文件夹改成faker放到library目录下,同时添加一个库引入文件Faker_init.php,内容如下:
class Faker_init
{
private $ci;
public function __construct()
{
$this->ci =& get_instance();
require_once 'faker/autoload.php';
}
}
具体实现(某个数据模型中)
public function generate($num = 10)
{
$this->load->library('faker_init');
$faker = Faker\Factory::create();
$insertArr = array();
$categories = array('', '护肤', '彩妆', '洗护', '香氛', '防晒');
for ($i = 0; $i < $num; $i++) {
$cate_id = $faker->numberBetween(1, 5);
$insertArr[] = array(
'name' => $faker->randomElement($array = array('英树法国松露晚安面膜' . $i, '英树透明质酸保湿肌底液' . $i, '英树羊胎素精华面霜' . $i)),
'picture' => 'upload/goods/' . $faker->randomElement($array = array('goods_20180310104327_6889', 'goods_20180411160948_7702', 'goods_20171103161139_3989')) . '.jpg',
'cate_id' => $cate_id,
'category' => $categories[$cate_id],
'spec' => $faker->randomElement(array('50ml', '100ml', '套装组合')),
'price' => $faker->numberBetween(100, 500),
'try_stock' => 100,
'pics' => 'upload/2018/05/03/8395aeadc0f93f3e.jpg,upload/2018/05/03/9225aeadc1847c7e.jpg,upload/2018/05/03/f5b5aeadc21e09ce.jpg',
// 'desc' => $faker->randomHtml(2, 3), //unknown
'desc' => $faker->realText($maxNbChars = 200, $indexSize = 2),
'start_time' => $this->datetime,
'end_time' => date('Y-m-d H:i:s', strtotime($this->datetime)),
'created_at' => $this->datetime
);
}
$this->addMany($insertArr);
return $insertArr;
}