liaosp / laravel-generator
Laravel, Lumen脚手架,可按规则自动生成model文件、controller和request文件
Requires
- php: >=7
- liaosp/tool: ^1.1
README
自动生成model文件、RESTful路由及对应的controller和request文件
安装
由于这是一个开发环境下使用的包,请执行以下方式安装,不要省略--dev
参数
composer require liaosp/laravel-generator --dev
Laravel 5.5以上版本安装后即可执行命令生成对应的文件,Lumen需要在bootstrap/app.php
文件末端添加如下代码
if ($app->environment() !== 'production') { $app->register(\Radish\LaravelGenerator\GeneratorServiceProvider::class); }
生成model文件
在生成前请确保您的数据库文件配置正确,同时您的数据表已经构建,因为此包生成的model会读取您的表结构生成对应的model
自动扫描数据库结构,为当前的所有表生成model文件,如果使用了软删除、创建、更新字段,请最好使用timestamp
类型字段,字段名称可以在配置文件中配置,其他不限。
models 脚手架
- 生成model文件
- 类名 class name 替换
- 命名空间 namespace 与 继承 class 替换
- 主键及主键属性判断
- 批量更新字段白名单
- 创建与更新时间戳的判断
- 软删除时间戳的判断
命令
php artisan radish:models
为指定的表生成model文件
php artisan radish:models user_tags
单个表生成时,请注意不需要带上表前缀,其余与表名一致
如果您的项目安装了barryvdh/laravel-ide-helper
与doctrine/dbal
,还会自动调用对应的命令为您生成model class的注释
生成API Controller文件
API脚手架
- 生成controller文件
- 命名空间 namespace 替换
- 类名 class name 替换
- 继承 class 替换
- 对应的 model class 替换
- 对应的 request class 替换
- 列表、详情、创建、更新、删除方法的默认处理
- 新增 RESTful路由
命令
api只能单个生成,需要注意controller
命名
php artisan radish:api UserController
关联model生成controller
会关联model
文件,生成request
文件,常用方法的基本使用,RESTful路由
php artisan radish:api UserTagController -m UserTag
注意-m后面的model一定是存在model配置文件夹中的model,命名需与文件中一致
路由
生成的route放在配置的文件中,你可以直接修改配置文件或者在引入路由文件
修改路由的主要原因是生成的controller文件等是完全可以自定义配置的,如果你不想修改可以配置成官方的路径,配置文件中apiDefault修改成对应的配置即可
laravel中可以直接在app\Providers\RouteServiceProvider
中新增或修改对应的访问引入route文件
... protected function mapApiRoutes() { Route::prefix('api') ->middleware('api') ->namespace('App\APIs\Controllers') ->group(base_path('app/APIs/route.php')); } ...
lumen可以直接在bootstrap/app.php
下面修改
$app->router->group([ 'namespace' => 'App\Http\Controllers', ], function ($router) { require base_path('app/APIs/route.php'); });
配置相关
如果您需要很多自定义配置,比如model、controller放置文件夹等,请先执行以下命令生成配置文件。
php artisan vendor:publish --provider="Radish\LaravelGenerator\GeneratorServiceProvider" --tag=config
- 默认配置
return [ //Eloquent Model 'model' => [ // 生成model的命名空间 'namespace' => 'App\Models', // 生成的model放置文件夹 'path' => base_path('app/Models'), // 生成的models继承的class 'extends' => 'Illuminate\Database\Eloquent\Model', 'extends_name' => 'Model', // 忽略的table, 不会生成models 'ignore' => ['users'], // 满足条件的table 不为空数组的时候 只会为填充的table生成model // 简单点说为多个指定的table生成model就填写在fill配置中 'fill' => [], // 时间戳字段 如果自定义时间戳字段需要 只需要修改键对应的值 'timestamps' => [ 'created_at' => 'created_at', 'updated_at' => 'updated_at', ], // 如果有自定义软删除时间戳 只需要修改对应的字段值 'soft_deletes' => 'deleted_at', ], 'api_default' => 'laravel', 'api_config' => [ 'laravel' => [ // 生成API的命名空间 'namespace' => 'App\Http\Controllers', // 生成的API放置文件夹 'path' => base_path('app/Http/Controllers'), // 生成的API继承的class 'extends' => 'App\Http\Controllers\Controller', 'extends_name' => 'Controller', // 是否生成request 'request' => true, 'request_path' => base_path('app/Http/Requests'), 'request_namespace' => 'App\Http\Requests', // 路由放置文件 'route' => base_path('routes/api.php'), ], .... ], ];