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代码生成器,快速构建项目代码,统一团队编码风格

Laravel

配置

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界面

Laravel代码生成器,快速构建项目代码,统一团队编码风格

说明

  • Model名称:实际Model的名字,可以是User,Order等
  • 显示名称:模型代表的名称,如用户,订单等
  • Create migration:表示生成迁移文件,Run migrate:表示运行迁移文件, ide-helper::models 表示运行ide Model帮助函数
  • 下面列表展示的是模板需要生成的文件,文件名可以动态修改,DummyClass是占位的名字,根据实际输入的Model名称来动态变化
  • Table fields中的字段对应迁移文件中的各种字段的配置,以及能根据自定义配置规则进行字段的处理,具体字段调用会在模板中进行说明
  • 支持外键和关联关系的处理
  • 设置的数据可以先保存,或者直接保存并生产文件

迁移

用于表添加字段或者更新字段

UI界面

Laravel代码生成器,快速构建项目代码,统一团队编码风格

说明

  • prefix:迁移文件的前缀,可以是add或者是edit等
  • tableName:数据库中实际的表名,如:users,orders等
  • table fields:迁移文件中的字段

模板

用于设置生成文件的模板,理论上是可以生成任何您所需要的文件的,在安装时,系统已默认安装了一组模版文件

UI界面

Laravel代码生成器,快速构建项目代码,统一团队编码风格

说明

列表说明:

  • 路径:文件所生成的相对路径,以项目所在的目录为根路径
  • 是否选中:在生成器界面,文件是否默认自动勾选生成
  • 所属组:将文件进行分组,方便生成文件的管理
  • 编辑:可以对模板信息进行编辑

模板字段说明:

基础字段:
  • 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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

这个估计用处不大了,现在用AI一句话模型,控制器,接口全部生成了。

1个月前 评论
foryoufeng (楼主) 5天前

怎么自定义生成模版

3周前 评论
foryoufeng (楼主) 5天前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!