【ThinkPHP】实现一个逆向工程生成model

ThinkPHP为了节省一些重复的步骤,写了个简单版的生成model的工具,逆向生成model代码,节省时间,专注写业务代码。
ThinkPHP中的命令行也提供了一些生成代码的命令:

make:controller  创建控制器
make:model 创建模型
make:middleware 创建中间件

ThinkPHP也提供了逆向生成model的命令:optimize:autoload,但是提示:Command “optimize:autoload” is not defined.
于是就算了,也不想去研究它。还不如直接写一个。

下面是一个简单的逆向工程工具实现代码:

<?phpnamespace app\controller;use app\BaseController;
use think\Request;
use think\Facade\Db;class GeneratorController extends BaseController
{static $schema = "shushan";public function generator(){//获取表名$tables = Db::query("SELECT TABLE_NAME  as 'name'from information_schema.tables WHERE TABLE_SCHEMA = :dataBase", ["dataBase" => GeneratorController::$schema]);foreach ($tables as $key => $value) {foreach ($value as $item) {//获取字段名称和备注$COLUMNS = Db::query("select COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT from information_schema.COLUMNS where table_name = :itemand table_schema = :dataBase", ["item" => $item, "dataBase" => GeneratorController::$schema]);$file = fopen("tempFile/" . GeneratorController::snakeToCamel($item) . ".php", "w");fwrite($file, "<?php" . PHP_EOL . "namespace app\model;" . PHP_EOL. PHP_EOL . "use think\model;" . PHP_EOL. PHP_EOL . "class " . GeneratorController::snakeToCamel($item) . " extends Model". PHP_EOL . "{" . PHP_EOL);$content = "//设置字段信息" . PHP_EOL ."protected $" . "schema = [" . PHP_EOL;fwrite($file, $content);//写入字段foreach ($COLUMNS as $COLUMN) {$content = "'" . $COLUMN["COLUMN_NAME"] . "'" . "       =>"  ."'" . $COLUMN["DATA_TYPE"] . "'" . "," . "//" . $COLUMN["COLUMN_COMMENT"] . PHP_EOL;fwrite($file, $content);}$content = PHP_EOL . "];";fwrite($file, $content);fwrite($file, PHP_EOL . "}");fclose($file);}}return $this->success();}static function snakeToCamel($str, $capitalized = true){$result = str_replace('_', '', ucwords($str, '_'));if (!$capitalized) {$result = lcfirst($result);}return $result;}
}

生成的效果:

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20466.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Photoshop简单案例(10)——利用PS修改证件照尺寸为1寸(或其他)

目录 一、项目介绍二、基本流程三、效果演示 一、项目介绍 本文介绍一下利用Photoshop修改证件照尺寸为1寸的方法。 二、基本流程 首先打开新建一个空白画布&#xff0c;设置画布宽度和高度分别为25mm和35mm&#xff0c;分辨率为300&#xff0c;背景颜色与证件照背景相同&am…

解决Ubuntu下arm-none-linux-gnueabihf-gcc -v :未找到命令

问题&#xff1a;arm-none-linux-gnueabihf-gcc -v arm-none-linux-gnueabihf-gcc&#xff1a;未找到命令 学习MP135开发板搭建环境之后没gcc不可用&#xff0c;网上找了很多教程都没法解决 解决方法&#xff1a; 1、重启&#xff1a;&#xff08;我试了没用&#xff09; 2、…

使用OpenCV显示图像的RGB颜色直方图

#include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv;int main( ) {Mat srcImage;srcImage=<

LiveGBS流媒体平台GB/T28181功能-作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备

LiveGBS作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备 1、背景说明2、部署国标平台2.1、安装使用说明2.2、服务器网络环境2.3、信令服务配置 3、监控摄像头设备接入3.1、海康GB28181接入示例3.2、大华GB28181接入示例3.3、华为IPC GB28181接…

基于Java+SpringBoot制作一个社区宠物登记小程序

制作一个社区宠物登记小程序,帮助社区居民登记和管理他们的宠物信息,以便更好地跟踪和维护社区中的宠物状况,通过社区宠物信息登记系统,社区居民可以更好地管理自己的宠物信息,并与其他宠物所有者共享资源和信息。这将有助于提高社区宠物的福利和安全,促进社区成员之间的…

Chat2DB-开源AI智能数据库客户端工具 能够将自然语言转换为SQL

一、Chat2DB是什么 Chat2DB 是一款有开源免费的多数据库客户端工具&#xff0c;支持windows、mac本地安装&#xff0c;也支持服务器端部署&#xff0c;web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力&#xff0c;能够将自然语言转换为SQ…

国产SAAS平台中类似Jira的有哪些值得关注的选择?

在项目管理市场中&#xff0c;Jira是一款非常知名的软件工具。它可以帮助团队成员更好地管理和协作&#xff0c;提高项目效率和质量。然而&#xff0c;Jira并不是完美的&#xff0c;存在诸如复杂操作、高昂费用等不足之处。因此&#xff0c;许多国内企业开始尝试寻找替代品&…

PowerShell 报错:因为在此系统上禁止运行脚本。有关详细信息

PowerShell 报错&#xff1a;因为在此系统上禁止运行脚本。有关详细信息 Import-Module : 无法加载文件 D:\\Documents\WindowsPowerShell\Modules\posh-git\1.1.0\posh-git.psm1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.…

家政服务小程序软件解决方案

家政服务小程序软件是近年来随着人们对家政服务需求的增长而逐渐兴起的一种数字化服务解决方案。通过小程序软件&#xff0c;用户可以轻松预约家政服务&#xff0c;包括保姆、月嫂、钟点工等&#xff0c;而且价格透明、服务规范&#xff0c;大大提高了用户对家政服务的满意度。…

基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能

系列文章目录 git常用命令大锦囊 文章目录 系列文章目录前言一、gitea安装1. 安装docker compose2. 安装gitea 二、给gitea配置https访问三、gitea配置ssh方式拉取代码四、给gitea配置可发送的邮箱五、gitea注册开启邮箱验证和邮箱通知总结附录 前言 团队需要多人协作开发&am…

GPT所想即所见的快速解惑

这是学习笔记的第 2464篇文章 在很多年前&#xff0c;自己脑袋里面冒出来这样的一段文字&#xff0c; 黑暗中一个孩子站在田野上看着另外一个孩子 就好像自己在看自己。 说是感慨也好&#xff0c;伤感也罢。那种画面感是一直难以名状的&#xff0c;最近试了下GPT&#xff0c;给…

力扣 | 二分查找模板

力扣&#xff1a;二分查找 文章目录 &#x1f4da;二分查找&#x1f4da;模板I&#x1f449;x 的平方根&#x1f449;猜数字大小&#x1f449;搜索旋转排序数组 &#x1f4da;模板II&#x1f449;第一个错误的版本&#x1f449;寻找峰值 &#x1f4da;模板III&#x1f449;在排…