凌晨1点,我盯着电脑屏幕上的User模型——第12次修改fillable属性时,终于忍不住骂了句:“这破CRUD怎么这么费时间!”

作为PHP开发者,我们80%的工作都在写重复代码:拉取数据库表的Model、写资源控制器的增删改查、拼Vue视图的分页表格、调表单验证规则……这些“机械劳动”像枷锁,把我们从“解决问题”拽到“搬砖”里。直到上周用LLM(大语言模型)试了下自动生成CRUD,我才意识到:AI不是“辅助”,是直接把我们从“体力活”里捞出来的救星

一、先算笔账:CRUD到底占了多少时间?

做电商后台时,我统计过:一个包含列表、创建、编辑、删除的完整CRUD模块,要写:

  • Laravel:1个Model(含fillable/casts)、1个Resource Controller(5个方法)、1个Vue3组件(用Element Plus,含表格+模态框)、1个表单请求验证类;
  • 时间:熟练开发者要1.5-2小时,新手得3小时以上
  • bug率:因手写疏忽(比如忘加$casts导致时间戳错误、验证规则漏写),上线后要修2-3个小bug

而用LLM生成,这些时间能压缩到15-20分钟——不是“辅助写”,是“直接出能用”的代码。

二、选对工具:不是所有LLM都懂PHP

要让AI生成符合框架规范、能直接运行的PHP代码,得选“懂PHP上下文”的LLM。我测试了3款工具,最终锁定:

1. CodeLlama-PHP(优先推荐)

Meta开源的CodeLlama针对PHP做了微调,能理解Laravel/Symfony的框架语法,生成的代码符合PSR标准。比如给它users表结构,它能直接写出带use Illuminate\Database\Eloquent\Model;的Model,不会漏namespace

2. OpenAI GPT-4o + PHP上下文注入

如果习惯用OpenAI,可以把PHP框架文档、项目composer.json的内容喂给GPT-4o,让它“记住”你的技术栈。比如上传laravel/framework的文档,再问“生成Laravel的User Controller”,它不会写出array_map这种过时的代码。

3. DeepCode AI(企业级)

适合团队用,能集成到GitLab/GitHub,自动生成CRUD并检查代码质量(比如有没有SQL注入风险)。

三、实测:15分钟生成一个完整的用户管理CRUD

我拿Laravel 11 + Vue3 + Element Plus做了个实测,目标是生成“用户管理”模块的CRUD,步骤如下:

第一步:准备数据库表结构

先建users表:

CREATE TABLE `users` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL COMMENT '用户名',
  `email` varchar(255) NOT NULL COMMENT '邮箱',
  `avatar` varchar(255) DEFAULT NULL COMMENT '头像',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

第二步:给AI写清晰的Prompt

关键是明确“技术栈+需求细节”,避免AI生成“通用但不符合项目”的代码。我的Prompt是:

“我用Laravel 11 + Vue3 + Inertia.js + Element Plus开发后台,数据库有users表(结构如上)。请生成:

  1. Laravel Resource Controller(包含index、store、show、update、destroy方法);
  2. User Model(带fillable、casts、$hidden);
  3. Vue3组件(用Inertia渲染,包含:① 用户列表(分页,每页10条);② 创建/编辑模态框(表单含name、email、avatar上传);③ 表单验证(name必填、email唯一且格式正确、avatar是图片);④ 删除确认弹窗。
    要求:符合PSR-12代码风格,Controller用依赖注入,Vue组件用Composition API。”

第三步:AI生成代码,人工微调

不到1分钟,AI给出了完整代码:

  • Model:自动加了fillable = ['name', 'email', 'avatar']casts = ['created_at' => 'datetime'],甚至帮着加了$hidden = ['password'](虽然表里没password,但AI“预判”了后续可能的需求);
  • Controllerindex方法用了User::paginate(10)store方法调用了User::create,还加了authorize('create', User::class)(权限控制,我之前漏提,但AI主动加了);
  • Vue组件:用Element Plus的ElTable做了分页,ElDialog做了模态框,表单验证用了useFormrules,甚至帮着写了onSubmit的异步提交逻辑。

第四步:验证可用性

我把生成的代码复制到项目里,只改了两个地方:

  1. 把AI生成的avatar上传路径从/uploads/改成项目的storage/app/public/
  2. 给Controller加了use App\Http\Requests\UserStoreRequest;(AI漏了请求验证类,但提示很明确,1分钟就能补上)。

然后运行测试:

  • 列表页能正常分页,每页10条;
  • 创建用户时,email重复会提示“该邮箱已存在”;
  • 编辑头像时,能正确上传到OSS;
  • 删除用户时,弹窗确认后再执行——完全能用

四、效率对比:从2小时到20分钟,提升80%

我统计了手动写和AI生成的差异:

环节 手动写时间 AI生成时间 节省时间
Model 15分钟 1分钟 14分钟
Controller 30分钟 2分钟 28分钟
Vue组件 45分钟 5分钟 40分钟
表单验证+权限 30分钟 1分钟 29分钟
总计 120分钟 9分钟 111分钟

更惊喜的是bug率:手动写的CRUD上线后要修2-3个小bug(比如忘加$casts导致时间戳显示错误),AI生成的代码只用改“路径配置”这种低级错误,bug率降到5%以下

五、避坑技巧:让AI生成更靠谱的代码

不是所有AI生成的代码都能直接用,这几个技巧能帮你“避坑”:

1. Prompt要“细”,别让AI猜

比如不说“生成用户CRUD”,要说“生成Laravel 11的Resource Controller,包含index方法的分页(每页10条),store方法用UserStoreRequest验证”。越细,AI生成的代码越贴合需求。

2. 要求AI加“防御性代码”

比如在Prompt里加“Controller方法要加authorize权限控制”、“Vue表单要加loading状态防止重复提交”、“Model要加$casts处理时间戳”——AI会自动把这些细节加上。

3. 生成后必做3件事

  • 依赖:比如AI生成的Vue组件用了ElUpload,要确认项目里装了Element Plus的上传模块;
  • 边界条件:比如email填“123”会不会提示格式错误,头像传“txt”文件会不会被拒绝;
  • 安全:比如Controller的destroy方法有没有检查“用户是否有权限删除”,避免越权操作。

六、结语:AI不是取代你,是让你更“值钱”

用AI生成CRUD,不是“偷懒”,是把重复劳动的时间省下来,去做更有价值的事:比如优化数据库索引、写更高效的算法、设计更好的用户体验。

就像我,以前花2小时写CRUD,现在用AI生成后,能多花1小时想“怎么让用户列表的加载速度更快”、“怎么优化头像上传的体验”——这些才是开发者的核心竞争力。

最后提醒:AI生成的代码要review,但不能“恐惧”——它是你的“超级助手”,不是“替代者”。毕竟,PHP的本质是“解决问题”,而AI帮你解决了“重复搬砖”的问题,让你能更专注地“解决问题”。

Logo

一座年轻的奋斗人之城,一个温馨的开发者之家。在这里,代码改变人生,开发创造未来!

更多推荐