webman框架虚拟数据填充fakerphp/faker插件的使用

一、使用背景

作为一名研发人员,想要批量制造一些测试数据,无论是自己测试,还是方便测试同学,都是有益的。fakerphp/faker插件可满足你的一些需求,它可以生成接近真实数据的一些虚拟数据,带来的体验感更好。

二、插件安装

参考Packagist插件市场:

在终端执行命令,并且可以指定对应的版本,选择不同的版本需要注意不同版本对php版本的要求:

插件安装完毕,查看扩展包目录:

三、框架内使用

webman框架可以自定义终端命令,执行如下:

app/Command下生成目录文件:

四、代码展示

复制代码
引入安装的扩展库Faker\Factory,创建生成器实例,即可使用插件的属性如name,address,email,phoneNumber等等,在for循环里制定生成的数据个数
php 复制代码
<?php

namespace app\command;

use app\model\OrderCopy;
use Faker\Factory;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;


class FakeDataCreate extends Command
{
    protected static string $defaultName = 'fakeData:create';
    protected static string $defaultDescription = 'fakeData create';

    /**
     * @return void
     */
    protected function configure(): void
    {
        $this->addArgument('name', InputArgument::OPTIONAL, 'Name description');
    }

    /**
     * @param InputInterface $input
     * @param OutputInterface $output
     * @return int
     */
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $output->writeln('start fakeData:create');
        $faker = Factory::create('zh_CN'); // 创建生成器实例
        $users = [];
        for ($i = 0; $i < 100; $i++) {
            $users[] = [
                'school_id' => 1,
                'canteen_id' => 2,
                'stall_id' => 9,
                'user_name' => $faker->name,
                'email' => $faker->unique()->email,
                'address' => $faker->address(),
                'mobile' => $faker->phoneNumber,
                'sn' => 'MO' . date('YmdHis',time()) . $faker->numerify('########'),
                'amount' => $faker->randomFloat($nbMaxDecimals = 2, $min = 0, $max = 100),
                'amount_real' => $faker->randomFloat(nbMaxDecimals: 2, min: 0, max: 100),
            ];
        }
        // 批量插入数据
        OrderCopy::insert($users);
        $output->writeln('end fakeData:create');
        return self::SUCCESS;
    }

}

五、执行命令

六、查看测试数据

七、总结

相比自己创建的测试数据,还是真实一些,对于后续测试,表查询效率优化,索引是否生效检查等都有积极的意义。

相关推荐
Ether IC Verifier11 小时前
TCP 重传机制详解
服务器·网络·网络协议·tcp/ip·php
catchadmin18 小时前
TrueAsync Server 为 PHP 带来了原生的高性能 HTTP 服务器
服务器·http·php
跨境数据猎手18 小时前
跨境电商系统开源PHP多语言架构拆解(上)
架构·开源·php
纽格立科技20 小时前
CDR标准体系再添三件套:组网、业务、工程同步落地
服务器·开发语言·人工智能·车载系统·php·信息与通信·传媒
薛定e的猫咪21 小时前
从 DSM 到多智能体仿真:复杂产品变更传播研究路线图
开发语言·人工智能·笔记·学习·php
雪度娃娃2 天前
Asio异步读写——连接的安全回收问题
开发语言·c++·安全·php
陌路202 天前
详解C++ 高性能网络库 muduo 的精简日志模块
开发语言·c++·php
我是伪码农2 天前
小程序100-125
开发语言·小程序·php
c++逐梦人2 天前
epoll ET服务器(Reactor模式)
运维·服务器·php
牛奔2 天前
codebuddy 桌面版 如何配置自己的模型
运维·服务器·开发语言·php