laravel神器教你一秒搞定增删改查业务模块-composer包query-common

本文主要是介绍laravel神器教你一秒搞定增删改查业务模块-composer包query-common,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

laravel神器教你一秒搞定增删改查业务模块

还在为了不断写增删改查而烦恼不堪嘛?还在为了重复写代码而头疼嘛?这个laravel神器拯救你的大脑,解放你的双手。让你有更多的时间去写出更好的代码。

安装

首先使用composer安装

composer require thepatter/query-common

安装之后创建一个command

php artisan make:command MakeQueryCommand

把下面的内容复制粘贴进去

<?phpnamespace App\Console\Commands;use Illuminate\Support\Str;
use InvalidArgumentException;
use Illuminate\Console\GeneratorCommand;
use Symfony\Component\Console\Input\InputOption;class MakeQueryCommand extends GeneratorCommand
{/*** The console command name.** @var string*/protected $name = 'make:queryController';/*** The console command description.** @var string*/protected $description = 'Create a new queryController class';/*** The type of class being generated.** @var string*/protected $type = 'QueryController';/*** Get the stub file for the generator.** @return string*/protected function getStub(){return resource_path('stubs/queryController.stub');}/*** Get the default namespace for the class.** @param  string  $rootNamespace* @return string*/protected function getDefaultNamespace($rootNamespace){return $rootNamespace.'\Http\Controllers';}/*** Build the class with the given name.** Remove the base controller import if we are already in base namespace.** @param  string  $name* @return string*/protected function buildClass($name){$controllerNamespace = $this->getNamespace($name);$replace = [];if ($this->option('model')) {$replace = $this->buildModelReplacements($replace);}$replace["use {$controllerNamespace}\Controller;\n"] = '';return str_replace(array_keys($replace), array_values($replace), parent::buildClass($name));}/*** Build the model replacement values.** @param  array  $replace* @return array*/protected function buildModelReplacements(array $replace){$modelClass = $this->parseModel($this->option('model'));if (! class_exists($modelClass)) {if ($this->confirm("A {$modelClass} model does not exist. Do you want to generate it?", true)) {$this->call('make:model', ['name' => $modelClass]);}}return array_merge($replace, ['DummyFullModelClass' => $modelClass,]);}/*** Get the fully-qualified model class name.** @param  string  $model* @return string*/protected function parseModel($model){// if (preg_match('([^A-Za-z0-9_/\\\\])', $model)) {//     throw new InvalidArgumentException('Model name contains invalid characters.');// }$model = trim(str_replace('/', '\\', $model), '\\');if (! Str::startsWith($model, $rootNamespace = $this->laravel->getNamespace())) {$model = $rootNamespace.$model;}return $model;}/*** Get the console command options.** @return array*/protected function getOptions(){return [['model', 'm', InputOption::VALUE_OPTIONAL, 'Generate a query controller for the given model.'],];}
}

在resources文件夹下创建stubs文件夹,在stubs文件夹下面创建QueryController.stub文件,把下面内容复制粘贴进去

<?phpnamespace DummyNamespace;use Illuminate\Http\Request;
use DummyRootNamespaceHttp\Controllers\QueryList\QueryController;
use App\Exceptions\CommonException;class DummyClass extends QueryController
{/*** 字典数组* ['表里的字段名' => '字典code',...]*/protected $dicArr = [];/*** 字段映射 可选,不填默认转成下划线格式* ['搜索字段' => '表字段',...]*/protected $filedsAdapter = [];/*** 创建时候的字段映射 可选,不填默认转成下划线格式* ['输入字段' => '表字段']*/protected $createAdapter = [];//定义表名 格式: table as tprotected $shortTableName;protected function getModel() {return new "DummyFullModelClass";}/** 查询列表* @route get.api/lists*/public function getList(Request $request){try{//检查页码,搜索条件等$this->pageValid();//返回数据return $this->success($this->pageList());} catch (Exception $ex) {}}  /*** 创建* @route post.api/info*/function createInfo(Request $request) {try{//创建$this->create($request->all());return $this->success(true);}catch(Exception $ex) {}}/*** 更新* @route put.api/info/{id}*/function updateInfo(Request $request, $id) {try{//查询记录$detail = $this->getModel()->find($id);if (empty($detail)) {//补充错误信息throw new CommonException();}//更新$this->update($id,$request->all());return $this->success(true);}catch(Exception $ex) {}}/*** 查询一条记录* @route get.api/info*/function detail(Request $request) {try{$rules = ['id'=>'required',];$messages = ['id.required'=>'id为必填项',];//验证$this->valid($request, $rule, $messages);//查询记录$detail = $this->getModel()->find($id);if (empty($detail)) {//补充错误信息throw new CommonException();}return $this->success($detail);}catch(Exception $ex) {}}/*** 删除一条记录* @route delete.api/info/{id}*/function deleteInfo(Request $request, $id) {try{//查询记录$model = $this->getModel();$detail = $model->find($id);if (empty($detail)) {//补充错误信息throw new CommonException();}//进行删除$res = $model->where('id', $id)->delete();return $this->success(true);}catch(Exception $ex) {}}}

创建业务逻辑

这时候执行创建的artisan命令就可以了

php artisan make:queryController your controller path -m your model path

这时候在你的Controller下面就会多出一个Controller文件,你只需要在路由中添加路由就可以了。

这个库的github地址在下面,感兴趣的朋友可以看一下。

https://github.com/Thepatterraining/queryCommon

这篇关于laravel神器教你一秒搞定增删改查业务模块-composer包query-common的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/857032

相关文章

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选