Laravel Artisan 是 Laravel 框架自带的命令行工具,基于 Symfony Console 组件构建,用于快速执行代码生成、数据库管理、任务调度等开发任务,显著提升开发效率。
一、基本使用方法Artisan 命令通过 php artisan 在项目根目录下调用,核心操作包括:
- 查看所有命令:php artisan list
- 查看命令帮助:php artisan help [command] # 例如:php artisan help make:model
- 显示框架版本:php artisan --version
- 命令参数与选项:例如生成资源控制器时添加 --resource 选项:php artisan make:controller UserController --resource
二、常用内置命令Artisan 提供覆盖开发全流程的命令,按功能分类如下:
1. 代码生成类命令- 模型(Model):php artisan make:model User # 创建 User 模型
- 控制器(Controller):php artisan make:controller PostController # 创建普通控制器php artisan make:controller API/V1/PostController --api # 创建 API 控制器
- 迁移文件(Migration):php artisan make:migration create_posts_table # 创建迁移文件
- 数据填充(Seeder):php artisan make:seeder UserSeeder # 创建填充类
- 请求验证(Request):php artisan make:request StorePostRequest # 创建表单请求验证类
- 中间件(Middleware):php artisan make:middleware CheckRole # 创建中间件
2. 数据库操作命令- 执行迁移:php artisan migrate # 运行所有未执行的迁移
- 回滚迁移:php artisan migrate:rollback # 回滚上一次迁移php artisan migrate:rollback --step=3 # 回滚指定步数
- 重置数据库:php artisan migrate:fresh # 删除所有表并重新迁移php artisan migrate:fresh --seed # 重置后运行填充
- 运行数据填充:php artisan db:seed # 运行所有填充类php artisan db:seed --class=UserSeeder # 运行指定填充类
3. 其他实用命令- 缓存配置与路由:php artisan config:cache # 缓存配置php artisan route:cache # 缓存路由
- 查看队列任务:php artisan queue:work # 处理队列任务php artisan queue:listen # 监听队列
- 生成应用密钥:php artisan key:generate # 生成 APP_KEY
三、自定义 Artisan 命令通过以下步骤创建项目专属命令:
生成命令类:
php artisan make:command SendEmails生成的类位于 app/Console/Commands 目录。
定义命令签名与逻辑:在类中设置 $signature(命令名称)和 $description(描述),并在 handle() 方法中编写业务逻辑:
protected $signature = 'emails:send {user}';protected $description = 'Send an email to a user';public function handle() { $user = User::find($this->argument('user')); // 发送邮件逻辑 $this->info('Email sent successfully!');}注册命令:在 app/Console/Kernel.php 的 $commands 数组中添加命令类:
protected $commands = [ AppConsoleCommandsSendEmails::class,];调用命令:
php artisan emails:send 1 # 传递参数 user=1
四、任务调度与自动化Laravel 通过 Artisan 实现定时任务调度,无需依赖系统 crontab 为每个任务单独配置。
定义调度任务:在 app/Console/Kernel.php 的 schedule 方法中添加任务:
protected function schedule(Schedule $schedule) { $schedule->command('emails:send')->daily(); # 每日执行 $schedule->exec('node /path/to/script.js')->hourly(); # 每小时运行脚本}配置服务器 crontab:添加以下条目,每分钟检查一次调度:
* * * * * cd /path-to-project && php artisan schedule:run >> /dev/null 2>&1
五、核心优势- 高效开发:通过命令快速生成重复性代码(如模型、控制器)。
- 统一管理:数据库迁移与填充确保环境一致性。
- 自动化能力:任务调度简化定时任务配置。
- 扩展性强:支持自定义命令满足复杂业务需求。
掌握 Artisan 的核心命令与扩展机制,能显著提升 Laravel 开发效率,减少手动操作错误。