Laravel 命令速查表 - Laravel Artisan 常用命令大全

这套速查给用 Laravel 做业务系统、以及负责部署的开发者,核心是每天都敲的 Artisan 命令行。它覆盖建项目、生成 controller/model/migration、跑与回滚迁移、用 route/config/view 缓存把线上性能提上去,以及用队列把重活丢到后台。与一条条堆 artisan 命令不同,条目按"建功能→迁库→本地联调→上线前缓存→队列化重活"的真实节奏排布。读完应能快速搭出一个 CRUD 功能并顺畅迁移库,同时心里清楚每一条缓存命令到底落地了什么、清了什么。

编程语言·共 40 条命令·最后更新 2026-07-21
laravelphpframework

典型使用场景

面向日常在 Laravel 项目里做「生成骨架 → 跑迁移 → 接路由 → 起队列」这条流水线的后端工程师。Artisan 命令的价值在于它同时完成了建文件与注册约定:make:model -mcr 一次生成模型、迁移、控制器与资源控制器,省掉手工建文件和改文件名对应关系。本表覆盖项目与代码生成、数据库迁移与种子、路由与缓存、队列 worker、测试与调试、以及维护模式的上下线。真正需要理解的不是命令列表,而是三条约定:文件名决定类名、缓存类配置会锁住 env() 的运行时取值、队列进程要靠 queue:restart 才能加载新代码。

项目与开发 10

laravel new project
创建新项目
php artisan serve
启动开发服务器
php artisan make:model Post -mcr
创建模型+迁移+控制器
php artisan make:migration create_posts_table
创建迁移文件
php artisan make:controller PostController
创建控制器
php artisan make:middleware CheckAge
创建中间件
php artisan make:request StorePostRequest
创建表单请求
php artisan make:job ProcessPodcast
创建队列任务
php artisan make:event PodcastProcessed
创建事件
php artisan make:listener SendNotification
创建监听器

数据库 8

php artisan migrate
执行所有未跑过的迁移,把表结构变更落到数据库
php artisan migrate:fresh
先回滚全部迁移再重新跑一遍,等于重建库表,开发/测试环境可快速重置数据
php artisan migrate:rollback
回退最近一批迁移(一批默认是 recent 组),改错表结构直接回到上一步
php artisan migrate:status
列出每条迁移的 pending/ran 状态,排查为什么某张表没建出来
php artisan db:seed
运行数据库种子填充,给开发环境灌入测试数据
php artisan db:seed --class=UserSeeder
只执行指定的 seeder 类,而不是全量跑一遍
php artisan make:seeder UserSeeder
生成一个 seeder 类模板,到里面写具体要插入的数据
php artisan make:factory PostFactory
生成测试工厂,配合 faker 批量制造假模型数据

路由与缓存 9

php artisan route:list
列出应用全部路由及对应控制器方法,排查 404/405 或重复路由很直观
php artisan route:cache
把路由编译为缓存文件,缩短每请求解析开销,生产环境部署后跑一次
php artisan route:clear
删除路由缓存,改了路由又看到旧行为时先清它
php artisan config:cache
把全部配置烘焙为单个缓存文件,显著降低每请求读配置的开销
php artisan config:clear
删除配置缓存,改完 .env 后务必清,否则新配置不生效
php artisan view:cache
预编译全部 blade 视图模板,省去每次渲染的编译步骤
php artisan view:clear
清除已编译的视图缓存,模板改动异常时先清它
php artisan optimize
一次完成配置与路由等缓存,适合上线前的性能收尾
php artisan optimize:clear
一并清空前面落地的全部缓存,回滚线上改动或恢复调试时用它

队列与任务 7

php artisan queue:work
启动一个常驻队列 worker,持续消费队列任务,生产由进程管理守护
php artisan queue:work --queue=high,default
按优先级顺序消费,先处理 high 队列再退到 default,让重要任务先落地
php artisan queue:restart
优雅地让所有在跑 worker 在处理完当前任务后重启以加载新代码
php artisan queue:failed
列出处理失败的任务及其原因,通常配合日志排查
php artisan queue:retry <id>
把指定失败任务重新丢回队列重试,修好逻辑后临时救场
php artisan queue:flush
清空所有失败任务记录,确认无需重试后清理堆积
php artisan make:job ProcessPodcast
生成队列任务类骨架,在 handle() 里写真正要异步执行的逻辑

测试与调试 6

php artisan test
运行测试
php artisan test --filter=UserTest
运行指定测试
php artisan tinker
进入交互式 REPL
php artisan down
进入维护模式
php artisan up
退出维护模式
php artisan storage:link
创建 storage 软链接

参数矩阵

参数作用示例
laravel new project创建新项目骨架(走 create-project 流程),比手工克隆模板更完整laravel new project
php artisan serve启动内置开发服务器;这是开发服务器,不适合作为生产进程php artisan serve
make:model Post -mcr一次生成模型(-m 迁移、-c 控制器、-r 资源控制器),是最高频的生成命令php artisan make:model Post -mcr
make:migration create_posts_table只建迁移文件;命名必须是 create_xxx_table,否则回滚时找不到对应表php artisan make:migration create_posts_table
make:controller PostController生成控制器;带 --invokable 可生成单动作控制器php artisan make:controller PostController
make:middleware CheckAge生成中间件;注册到 Kernel 或 bootstrap 里的中间件栈才生效php artisan make:middleware CheckAge
make:request StorePostRequest生成表单请求类,把校验与授权从控制器里分离出去php artisan make:request StorePostRequest
make:job ProcessPodcast生成队列任务类;任务要能安全重试,不能假设只执行一次php artisan make:job ProcessPodcast
make:event / make:listener生成事件与监听器,事件驱动解耦的标准组合php artisan make:listener SendNotification
php artisan migrate执行未跑过的迁移;--force 可在生产跳过确认提示php artisan migrate
php artisan migrate:fresh回滚全部并重建,会清空所有表数据;生产误用等同数据事故php artisan migrate:fresh
php artisan migrate:rollback回滚最近一批迁移,常用于本地撤销刚写的迁移php artisan migrate:rollback
php artisan migrate:status列出每个迁移是否已执行,排查「某张表没建出来」的第一步php artisan migrate:status
php artisan db:seed --class=UserSeeder指定要跑的 Seeder 类;配合 --class 避免多个 seeder 时误跑php artisan db:seed --class=UserSeeder
php artisan make:factory PostFactory生成模型工厂,测试里造假数据靠它,与 seeder 用途不同php artisan make:factory PostFactory
php artisan route:list列出全部路由与中间件,排查 404 与中间件缺失的首选命令php artisan route:list
php artisan route:cache缓存路由表,显著加速加载;路由文件里不能再有闭包路由php artisan route:cache
php artisan config:cache缓存配置,之后 env() 在运行时取不到值(配置已固化成常量)php artisan config:cache
php artisan optimize一次性生成路由、配置与视图缓存,部署后的标准动作php artisan optimize
php artisan optimize:clear清掉全部缓存;本地改了 .env 却没生效时先跑它php artisan optimize:clear
php artisan view:cache / view:clear预编译视图 / 清除视图缓存,改了 blade 后没生效时清一次php artisan view:clear
php artisan queue:work前台运行队列消费者,逐个处理任务;开发调试用这个能看到报错php artisan queue:work
php artisan queue:work --queue=high,default指定队列优先级,按逗号顺序消费;配了高优队列却不写这个参数就会串行处理php artisan queue:work --queue=high,default
php artisan queue:restart让运行中的 worker 优雅退出并在下次取任务时重启,是发布新代码的必要动作php artisan queue:restart
php artisan queue:failed列出失败任务及其异常,排障入口php artisan queue:failed
php artisan queue:retry <id>重试指定失败任务;也支持 flush 清空全部失败记录php artisan queue:retry <id>
php artisan queue:flush清空所有失败任务记录,不可恢复;误用会丢掉排障线索php artisan queue:flush
php artisan test运行测试套件;--filter 可只跑某个测试类php artisan test --filter=UserTest
php artisan tinker进入带框架已启动的 REPL,用来验证模型、查询与关系是否如预期php artisan tinker
php artisan down / up维护模式开关;down 会给所有请求返回 503,务必设 --retry 与 --secretphp artisan down
php artisan storage:link创建 public/storage 符号链接;缺失时上传的图片无法通过 URL 访问php artisan storage:link

易错点与避坑指南

现象改了 .env 里的配置,代码里读到的还是旧值。

原因配置被 config:cache 固化了,运行时不再解析 .env。

处置开发环境执行 php artisan optimize:clear;生产改配置后要重新执行 config:cache。

现象生产上部署了新代码,队列里跑的还是旧逻辑。

原因长期运行的 queue:work 进程已把代码载入内存,不会自动更新。

处置部署流程里执行 queue:restart 让 worker 优雅重启,并确认进程管理器会重新拉起。

现象route:cache 之后报 "Unable to prepare route ... uses Closure",全部路由失效。

原因路由文件里有闭包路由,闭包无法被序列化进缓存。

处置把闭包路由改写成控制器类动作;开发环境用 route:clear 清掉缓存继续调试。

现象误在生产执行 migrate:fresh,表数据全没了。

原因fresh 会 drop 全部表再重建,没有确认也没有备份动作。

处置生产只允许 migrate;先备份数据库,并在流程上限制非交互环境使用 fresh。

现象上传的文件保存成功了,但访问 URL 返回 404。

原因public/storage 符号链接不存在,或共享主机不允许创建符号链接。

处置执行 storage:link;无法创建链接时改用 route 到一个控制器返回文件。

现象高优队列的任务迟迟不处理。

原因worker 启动时没带 --queue=high,default,或队列名在 dispatch 时与配置不一致。

处置按优先级顺序写全队列名,并核对 dispatch 使用的队列名与进程管理器里的启动参数。

现象make:migration 生成的文件名与表名不符,回滚时报找不到迁移。

原因手工命名没遵循框架约定的命名规则,或多次生成造成同批次回滚顺序错乱。

处置统一用 create_xxx_table / add_xxx_to_yyy_table 命名,并用 migrate:status 确认执行记录。

现象请求全部返回 503,忘记了自己开着维护模式。

原因php artisan down 之后的 up 未执行,异常时切进去的维护模式没退出。

处置执行 php artisan up;down 时带上 --retry=60 让客户端自动重试。

排障路径

  1. 1确认各迁移是否已执行

    php artisan migrate:status

    「表不存在」类问题的第一步。

  2. 2查路由是否真的注册上

    php artisan route:list

    404 时先确认路由存在,再看路径与方法是否匹配。

  3. 3清掉全部缓存

    php artisan optimize:clear

    改了 .env、路由或视图后没生效时先跑它。

  4. 4让队列 worker 加载新代码

    php artisan queue:restart

    发布新代码后的必要动作。

  5. 5查失败任务与异常信息

    php artisan queue:failed

    先看异常类型再决定重试还是改代码。

  6. 6只跑单个测试类

    php artisan test --filter=UserTest

    缩短反馈回路,同时确认测试环境配置正确。

命令示例

一条命令生成模型全套:迁移 + 控制器 + 请求类

php artisan make:model Post -mcr php artisan make:request StorePostRequest php artisan migrate

-m 建迁移、-c 建控制器、-r 建表单请求,三件套生成后仍要手写字段、校验规则和授权逻辑。表单请求的价值在于校验失败自动回 302 带错误包,控制器里就不用重复写错误处理。

排查 404 / 405:先列出全部路由

php artisan route:list php artisan route:list --path=posts php artisan route:clear

405 说明方法不匹配而路由存在(多半是前端发 POST、路由只写了 GET),404 才是路径或前缀不对。改过路由文件却仍走旧行为时,多半是 route:cache 缓存了旧表,先 clear 再验证。

改了 .env 却没生效:缓存全流程

php artisan config:clear php artisan route:clear php artisan view:clear // 上线前反向烘焙 php artisan optimize

config:cache 会把 .env 的值烘焙进一个静态文件,此后改 .env 完全无效——这是「改了配置没反应」最常见的原因。改完 .env 必须 config:clear;上线前再用 optimize 一次性烘焙,把每请求读文件的开销省掉。

队列:按优先级消费 + 优雅重启

php artisan queue:work --queue=high,default php artisan queue:restart php artisan queue:failed php artisan queue:retry <id>

worker 是常驻进程,跑的是启动那一刻加载的代码;发布新版本后不重启,任务仍执行旧逻辑且没有任何提示——queue:restart 让 worker 处理完当前任务后自动退出重载。失败任务别急着 flush,先 queue:failed 看原因。

发布前后的迁移顺序:status 先行

php artisan migrate:status php artisan migrate php artisan migrate:rollback

生产环境的迁移要「先发布兼容旧结构的代码、再执行迁移」,否则先加非空列会让仍在运行的旧版本写入直接失败。rollback 只回退最近一批,写错结构时比手工改表安全。migrate:fresh 会删库重建,只限开发与测试环境。

常见坑与注意事项

  • php artisan config:cache 会把 .env 烘焙进静态缓存文件,之后改 .env 完全不生效,必须先 config:clear;不熟悉的「配置不生效」十有八九出在这里。
  • php artisan migrate:fresh 会回滚全部迁移并重新执行,等于删库重建。在生产或任何含真实数据的库上执行会不可逆地丢数据,没有任何二次确认。
  • 配置了 queue:work 常驻进程后发布新代码不重启,worker 仍按旧代码处理任务,行为与预期不一致且日志无提示;发布流程里必须带上 queue:restart。
  • route:cache 缓存的是路由表,部署顺序不当(新代码 + 旧缓存)会让线上跑着一半新一半旧的控制器逻辑;线上加路由前先确认缓存是否已清。
  • php artisan down 进入维护模式后忘记 php artisan up,站点会一直返回 503;异常退出维护模式前应确认 .env 中的 APP_ENV 与缓存状态已恢复。
  • php artisan queue:flush 清空的是全部失败任务记录,出问题后先 queue:failed 留存原因再清,否则关键故障线索被一并删除。

提示

  • 生产环境务必执行 php artisan optimize 缓存配置和路由。
  • make:model -mcr 一次性生成模型+迁移+资源控制器,节省时间。
  • 队列 worker 用 Supervisor 守护,避免进程意外退出。

常见问题

改了 .env 或路由后线上行为还是旧的,缓存要清哪些?

Laravel 把配置和路由都缓存成了文件,源码改了不生效就得按对应命令清。改完 .env 先 php artisan config:clear,再 php artisan route:clear 让路由重新解析;模板改动异常就 php artisan view:clear 清编译好的 blade。上线前用 php artisan optimize 一次烘焙配置与路由缓存以提升性能,回滚或恢复调试时用 php artisan optimize:clear 把全部缓存一并清空。改完配置缓存不生效是本地开发最常见的困惑来源。

改了迁移文件后悔了,怎么回到上一步或重建数据库?

分两级。php artisan migrate:rollback 回退最近一批迁移,适合迁移写错时撤回一步;php artisan migrate:fresh 先回滚全部再重跑一遍,等于重建全部表结构,开发和测试环境用它快速重置,但会清掉所有数据。排查为什么某张表没建出来时先看 php artisan migrate:status,它会列出每条迁移的 pending / ran 状态。开发阶段灌测试数据用 php artisan db:seed,只跑某一个用 php artisan db:seed --class=UserSeeder。

队列任务失败了,怎么定位原因并重试?

先看失败清单:php artisan queue:failed 会列出处理失败的任务及其原因,结合日志判断是业务异常还是超时。重试指定任务用 php artisan queue:retry <id>,修好逻辑后临时救场用。确认无需再重试后,php artisan queue:flush 清空所有失败任务记录。消费端按优先级跑:php artisan queue:work --queue=high,default 先处理 high 队列再退到 default,让重要任务先落地;发布新代码后用 php artisan queue:restart 让 worker 处理完当前任务后重启加载新代码,生产环境应由进程管理器守护。

make:model 的那些参数怎么组合最省事?

常用组合是 php artisan make:model Post -mcr:-m 生成迁移、-c 生成资源控制器、-r 生成请求类(Form Request),一条命令把模型加配套文件一次铺好。只要迁移就 php artisan make:migration create_posts_table;只要控制器用 php artisan make:controller PostController。校验逻辑单独拆出来更清晰时用 php artisan make:request StorePostRequest,权限或登录态拦截用 php artisan make:middleware CheckAge。异步与事件相关的骨架有 php artisan make:job ProcessPodcast、php artisan make:event PodcastProcessed、php artisan make:listener SendNotification,假数据用 php artisan make:factory PostFactory 配合 faker 批量生成模型数据。

接口返回 404 或 405,先用什么命令定位?

php artisan route:list 会列出应用全部路由及其对应的控制器方法,方法名对不上就是路由没注册或路径拼错;同一路径出现多条时后面注册的会覆盖前面的,表现为「改了路由还是旧行为」。405 说明路由存在但 HTTP 方法不匹配(比如该 POST 却发了 GET),在 route:list 里核对方法列即可。日常开发用 php artisan serve 起服务,交互式验证逻辑可以 php artisan tinker 进 REPL,只想跑某个测试则 php artisan test --filter=UserTest;维护窗口用 php artisan down / php artisan up 控制。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们