Laravel代码生成器,快速构建项目代码,统一团队编码风格
V4.0
更新时间:2025-06-04
更新日志
- 修改模板引擎为blade,并修改默认模板内容
- 更改配置文件
laravel-generator.php
的配置 - 增加已存在表的模板迁移
安装
若已安装 PHP 和 Composer,可通过 Composer 安装 Laravel 安装器:
composer global require laravel/installer
创建Laravel应用
安装 PHP、Composer 和 Laravel 安装器后,您即可创建新 Laravel 应用。Laravel 安装器将提示您选择偏好的测试框架、数据库及入门套件:
laravel new example-app
应用创建完成后,可使用 dev
Composer 脚本启动 Laravel 本地开发服务器、队列工作进程及 Vite 开发服务器:
cd example-app
npm install && npm run build
composer run dev
开发服务器启动后,您的应用可在浏览器中通过 http://localhost:8000
访问。接下来可更新 .env 配置文件以使用相应数据库。例如,若使用 MySQL,可如此更新 .env 文件中的 DB_* 变量
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Laravel Generator项目说明
项目地址:github.com/foryoufeng/laravel-gene...
文档地址:generator.pp-lang.tech/
安装Laravel Generator
通过 Composer 进行安装
composer require --dev foryoufeng/laravel-generator
运行如下命令来安装代码生成器
php artisan generator:install
现在你可以访问您的应用urlhttp://localhost:8000/laravel-generator
来使用Laravel Generator
了
UI界面
安装完成后,访问链接即可见到如下界面
配置
Laravel Generator灵活的配置允许您根据自己的需要进行相应的配置,下面来看看您可以如何进行配置
配置文件
安装完Laravel Generator后,您可以通过运行如下命令来获取配置文件,将会放到config/laravel-generator.php
php artisan vendor:publish --tag=laravel-generator
laravel-generator.php
文件说明
<?php
return [ // 项目的名称
'name' => 'Laravel Generator', // 访问地址
'route'=>'laravel-generator', // 定义规则
'rules'=>[
'string', 'email', 'file', 'numeric', 'array', 'alpha', 'alpha_dash', 'alpha_num', 'date', 'boolean', 'distinct', 'phone', 'custom'
],
//自定义参数
'custom_keys'=>[
'author'=>env('GENERATOR_AUTHOR','system')
]
在.env
中配置GENERATOR_AUTHOR=你的名字
,来进行创建人的配置
生成器
用于根据配置信息来快速生成模板文件,可以先保存文件,团队评审完毕后根据需求再进行文件的生成
UI界面
说明
- Model名称:实际Model的名字,可以是User,Order等
- 显示名称:模型代表的名称,如用户,订单等
- Create migration:表示生成迁移文件,Run migrate:表示运行迁移文件, ide-helper::models 表示运行ide Model帮助函数
- 下面列表展示的是模板需要生成的文件,文件名可以动态修改,
DummyClass
是占位的名字,根据实际输入的Model名称来动态变化 - Table fields中的字段对应迁移文件中的各种字段的配置,以及能根据自定义配置规则进行字段的处理,具体字段调用会在模板中进行说明
- 支持外键和关联关系的处理
- 设置的数据可以先保存,或者直接保存并生产文件
迁移
用于表添加字段或者更新字段
UI界面
说明
- prefix:迁移文件的前缀,可以是add或者是edit等
- tableName:数据库中实际的表名,如:users,orders等
- table fields:迁移文件中的字段
模板
用于设置生成文件的模板,理论上是可以生成任何您所需要的文件的,在安装时,系统已默认安装了一组模版文件
UI界面
说明
列表说明:
- 路径:文件所生成的相对路径,以项目所在的目录为根路径
- 是否选中:在生成器界面,文件是否默认自动勾选生成
- 所属组:将文件进行分组,方便生成文件的管理
- 编辑:可以对模板信息进行编辑
模板字段说明:
基础字段:
- DummyDisplayName:显示名称,如用户地址
- DummyClass:类名称,如:UserAddress
- DummyCamelClass:类的驼峰名,如:userAddress
- DummySnakeClass:类小写,如user_address
- DummyPluralClass:类的复数,如Users
- DummySnakePluralClass:类小写复数,如users
全局变量:
$tableFields
:所有的表字段数据,通过@foreach遍历循环表字段,取出表数据$customKeys
:自定义的键值对,如$customKeys['author']
$relationShips
:关联关系的数据,$modelFields
:模型相关的数据,如primary_key
,timestamps
,soft_deletes
模板渲染
- 使用的blade进行模板的处理
模板示例
<?php
/**
*
* DummyDisplayName
* author: {{$customKeys['author']}}
* created_at: {{ date('Y-m-d H:i:s') }}
*/
namespace App\Http\Controllers\Admin;
use App\Models\DummyClass;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Illuminate\Database\Eloquent\Builder;
class DummyClassController extends Controller
{
public function index(Request $request): JsonResponse
{
$create_start_time = $request->get('create_start_time');
$create_end_time = $request->get('create_end_time');
@foreach($tableFields as $field)
@if($field['can_search'])
${{$field['field_name'] }} = $request->get('{{$field['field_name'] }}');
@endif
@endforeach
$data = DummyClass::orderByDesc('id')
@foreach($tableFields as $field)
@if($field['can_search'])
@if('numeric'==$field['rule'])
->when(${{$field['field_name'] }}, fn (Builder $query) => $query->where('{{$field['field_name'] }}', ${{$field['field_name'] }}))
@elseif('string'==$field['rule'])
->when(${{$field['field_name'] }}, fn (Builder $query) => $query->where('{{$field['field_name'] }}', 'like', "%${{$field['field_name'] }}%"))
@else
->when(${{$field['field_name'] }}, fn (Builder $query) => $query->where('{{$field['field_name'] }}', 'like', "%${{$field['field_name'] }}%"))
@endif
@endif
@endforeach
->when($create_start_time, fn (Builder $query) => $query->where('created_at', '>=', $create_start_time))
->when($create_end_time, fn (Builder $query) => $query->where('created_at', '<=', $create_end_time))
->paginate();
$data->getCollection()->transform(function (DummyClass $DummySnakeClass){
//$DummySnakeClass->setAttribute('id', 'ID');
return $DummySnakeClass;
});
return response()->json(['message' => 'success', 'errcode' => 0, 'data' => $data->toArray()]);
}
public function update(Request $request)
{
$id = (int)$request->get('id');
$DummySnakeClass = null;
if($id){
$DummySnakeClass = DummyClass::whereId($id)->first();
}
$data=$request->validate([
'id' => 'required|int',
@foreach($tableFields as $field)
@if('string'==$field['rule'] && false==$field['nullable'])
'{{$field['field_name'] }}' => 'required'
@endif
@endforeach
],[],[
'id' => 'ID',
@foreach($tableFields as $field)
@if('string'==$field['rule'] && false==$field['nullable'])
'{{$field['field_name'] }}' => '{{$field['field_display_name'] }}'
@endif
@endforeach
]);
if(!$DummySnakeClass){
$DummySnakeClass=new DummyClass();
}
$DummySnakeClass->fill($data);
if($DummySnakeClass->save()){
return response()->json(['message' => '保存成功', 'errcode' => 0, 'data' => []]);
}
return response()->json(['message' => '保存失败', 'errcode' => 1, 'data' => []]);
}
public function delete(Request $request)
{
$id = (int)$request->get('id');
$DummySnakeClass = DummyClass::whereId($id)->first();
if($DummySnakeClass && $DummySnakeClass->delete()){
return response()->json(['message' => '删除成功', 'errcode' => 0, 'data' => []]);
}
return response()->json(['message' => '删除失败', 'errcode' => 1, 'data' => []]);
}
}
好了,以上是Laravel Generator代码所有的功能,感谢看到这里,希望您使用愉快
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: