laravel中artisan工具(命令)的使用详解

本文详细介绍了Laravel框架中的Artisan命令行工具,包括如何使用它来创建控制器、模型,查看路由,创建中间件等。Artisan提供了便利的命令,如`php artisan help`和`php artisan make:controller`,简化了开发者的工作流程,如自动生成控制器、模型文件,并自动设置命名空间。此外,还介绍了如何创建和管理路由、数据迁移和填充、中间件,以及使用`php artisan route:clear`和`php artisan optimize`等优化命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • artisan工具,首先,这个是一个php文件,它放在我们laravel框架的根目录
Artisan工具简介

Artisan 是 Laravel 中自带的命令行工具的名称。它提供了一些对您的应用开发有帮助的命令。它是由强大的 Symfony Console 组件驱动的。为了查看所有可用的 Artisan 的命令,您可以使用 list 命令来列出它们:

在脚本中执行php artisan list可以查看所有的命令

那么熟悉linux的知道,不管什么命令都有一个help命令,当运行的时候,忽然之间,忘了的话,可以执行help命令去查看一下我们需要的命令,同样的在laravel框架中也可以去执行help命令去查看如: 
php artisan help migrate

利用artisan工具创建控制器

了解tp框架的同学,能知道,如果去创建一个控制器,需要自己去手写,命名空间,继承类等 
那么在laravel中,还可以利用artisan工具去执行,如创建一个MsgController 
php artisan make:controller MsgController 
执行之后,’app\http\Controllers’会多出一个MsgController,并且也准备好了方法增,删,改,查,等如果不需要那怎么办呢?很简单,一是直接删除,二利用命令生成空白的控制器如: 
php artisan make:controller --plain

但是,有的同学会遇到这种情况,如,一个项目分前台和后台,相应的控制器也需要放置在不同的目录下,这种怎么处理呢,如果用artisan工具?比如创建一个Admin\GoodsController

php artisan make:controller Admin\GoodsController 
前提是在laravel项目中的App\Http\Controllers下已创建Admin文件夹,执行之后会发现,admin下多出GoodsController的文件,打开,发现命名空间也自动整理好; 
这条命令指示,验证了laravel框架的灵活性,开发者可以随意的去指定;

利用artisan工具创建model

作为程序员,开发项目的同时,我们需要去操作数据库,那么肯定就与model有关系,那么如何使用artisan工具去创建一个model呢?和控制器,大同小异,比如创建一个Msg的model

php artisan make:model Msg 
在laravel中,它默认是放在App目录下,那如果想要定义自己的文件夹呢和控制器也是一样的我们指定它的目录即可,不过要注意的是把命名空间需要改变一下

利用artisan工具查看路由

在laravel框架中,如果想要在浏览器中去响应控制器中的方法,那么只需要,在App\routes.php中去指定路由即可,但是如果我们使用资源路由,只需指定一条路由即可,并且,它也直接生成好多方法,但我们是看不到的,那么怎么办呢? 
php artisan route:list 
利用这条命令可以查看所有的路由

利用artisan工具创建中间件 
首先在laravel中,中间件也是一个非常方便的东西,那么中间件是什么呢? 
简单的理解就是,中间件可以放到我们的控制器的方法前或后去执行,来影响执行的结果. 
用过,laravel框架做过项目的都知道,每当post提交的时候,都会报一个Token的错误,解决办法是加个 
{!!csrf_field()!!}即可,但是根本原因在哪里呢? 
app\http\middleware\VerifyCsrfToken.php的问题,把这个中间件发在全局上,每当去post的提交的时候就会验证;

如何去生成一个中间件呢?

php artisan make:middleware EmailMiddleware 
执行会在,middleware 文件夹下找到


=================================分割线================================


全局篇


查看artisan命令
 
  
  1. php artisan
  2. php artisan list
查看某个帮助命令
 
   
  1. php artisan help make:model

查看laravel版本
 
   
  1. php artisan --version
使用 PHP 内置的开发服务器启动应用
 
   
  1. php artisan serve

生成一个随机的 key,并自动更新到 app/config/app.php 的 key 键值对(刚安装好需要做这一步)
 
   
  1. php artisan key:generate
开启Auth用户功能(开启后需要执行迁移才生效)
 
   
  1. php artisan make:auth

开启维护模式和关闭维护模式(显示503)
 
    
  1. php artisan down
  2. php artisan up
进入tinker工具
 
    
  1. php artisan tinker

列出所有的路由
 
   
  1. php artisan route:list
生成路由缓存以及移除缓存路由文件
 
   
  1. php artisan route:cache
  2. php artisan route:clear



功能篇


创建控制器
 
   
  1. php artisan make:controller StudentController
创建Rest风格资源控制器(带有index、create、store、edit、update、destroy、show方法
 
   
  1. php artisan make:controllerPhotoController--resource

创建模型
 
   
  1. php artisan make:model Student
创建新建表的迁移和修改表的迁移
 
   
  1. php artisan make:migration create_users_table--create=students//创建students表
  2. php artisan make:migration add_votes_to_users_table--table=students//给students表增加votes字段

执行迁移
 
   
  1. php artisan migrate
创建模型的时候同时生成新建表的迁移
 
   
  1. php artisan make:modelStudent-m

回滚上一次的迁移
 
   
  1. php artisan migrate:rollback
回滚所有迁移
 
   
  1. php artisan migrate:reset

创建填充
 
   
  1. php artisan make:seeder StudentTableSeeder
执行单个填充
 
   
  1. php artisan db:seed--class=StudentTableSeeder

执行所有填充
 
   
  1. php artisan db:seed
创建中间件 (app/Http/Middleware  下)
 
   
  1. php artisan make:middlewareActivity

创建队列(数据库)的表迁移(需要执行迁移才生效)
 
   
  1. php artisan queue:table
创建队列类 (app/jobs下)
 
   
  1. php artisan make:jobSendEmail

创建请求类(app/Http/Requests下)
 
   
  1. php artisan make:request CreateArticleRequest

=================================分割线================================

1、控制器 or Model

// 5.2版本创建一个空控制器
php artisan make:controller BlogController
// 创建Rest风格资源控制器
php artisan make:controller PhotoController --resource
// 指定创建位置 在app目录下创建TestController
php artisan make:controller App\TestController
// 指定路径创建
php artisan make:Model App\\Models\\User(linux or macOs 加上转义符)
// 数据迁移
php artisan migrate

2、数据迁移(Migration)

// 创建迁移
php artisan make:migration create_users_table
// 指定路径
php artisan make:migration --path=app\providers create_users_table
// 一次性创建
// 下述命令会做两件事情:
// 在 app 目录下创建模型类 App\Post
// 创建用于创建 posts 表的迁移,该迁移文件位于 database/migrations 目录下。
php artisan make:model --migration Post

3、数据填充(Seeder)

// 创建要填充的数据类
php artisan make:seeder UsersTableSeeder
// 数据填充(全部表)
php artisan db:seed
// 指定要填充的表
php artisan db:seed --class=UsersTableSeeder

4、路由

// 查看所有路由
php artisan route:list

5、tinker命令插入单条数据

E:\opensource\blog>php artisan tinker
Psy Shell v0.7.2 (PHP 5.6.19 鈥?cli) by Justin Hileman
>>> $user = new App\User;
=> App\User {#628}
>>> $user->name = 'admin'
=> "admin"
>>> $user->email = 'fation@126.com'
=> "fation@126.com"
>>> $user->password = bcrypt('123456');
=> "$2y$10$kyCuwqSpzGTTZgAPMgCDgung9miGRygyCAIKHJhylYyW9osKKc3lu"
>>> $user->save();
"insert into `users` (`name`, `email`, `password`, `updated_at`, `created_at`) v
alues (?, ?, ?, ?, ?)"
=> true
>>> exit
Exit:  Goodbye.

6、Request请求,主要用于表单验证

php artisan make:request TagCreateRequest

创建的类存放在 app/Http/Requests 目录下

<?php 

namespace App\Http\Requests;

use App\Http\Requests\Request;

class TagCreateRequest extends Request
{

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */ 
    public function rules()
    {
        return [
            'tag' => 'required|unique:tags,tag',
            'title' => 'required',
            'subtitle' => 'required',
            'layout' => 'required',
        ];
    }
}


使用时只需在对应的Controller方法里引入

// 注意这里使用的是TagCreateRequest
public function store(TagCreateRequest $request)
{
    $tag = new Tag();
    foreach (array_keys($this->fields) as $field) {
        $tag->$field = $request->get($field);
    }
    $tag->save();
    return redirect('/admin/tag')
        ->withSuccess("The tag '$tag->tag' was created.");
}


7、 创建artisan命令行(laravel5.*版本)

// 以下命令生成文件 app/Console/Commands/TopicMakeExcerptCommand.php

php artisan make:console TopicMakeExcerptCommand --command=topics:excerpt
//在 app/Console/Kernel.php 文件里面, 添加以下
protected $commands = [
        \App\Console\Commands\TopicMakeExcerptCommand::class,
    ];
//激活artisan命令行。
//在生成的TopicMakeExcerptCommand.php 文件, 修改以下区域
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class TopicMakeExcerptCommand extends Command
{
    /**
     * 1. 这里是命令行调用的名字, 如这里的: `topics:excerpt`, 
     * 命令行调用的时候就是 `php artisan topics:excerpt`
     *
     * @var string
     */
    protected $signature = 'topics:excerpt';

    /**
     * 2. 这里填写命令行的描述, 当执行 `php artisan` 时
     *   可以看得见.
     *
     * @var string
     */
    protected $description = '这里修改为命令行的描述';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * 3. 这里是放要执行的代码, 如在我这个例子里面,
     *   生成摘要, 并保持.
     *
     * @return mixed
     */
    public function handle()
    {
        $topics = Topic::all();
        $transfer_count = 0;

        foreach ($topics as $topic) {
          if (empty($topic->excerpt))
          {
              $topic->excerpt = Topic::makeExcerpt($topic->body);
              $topic->save();
              $transfer_count++;
          }
        }
        $this->info("Transfer old data count: " . $transfer_count);
        $this->info("It's Done, have a good day.");
    }
}


// 命令行调用
php artisan topics:excerpt 

========================分割线====================================

artisan 命令列表一

  1. php artisan –help:显示帮助命令的使用格式,同 php artisan help  
  2. php artisan –version:显示当前使用的 Laravel 版本  
  3. php artisan changes:列出当前版本相对于上一版本的主要变化  
  4. php artisan down:将站点设为维护状态  
  5. php artisan up:将站点设回可访问状态  
  6. php artisan optimize:优化应用程序性能,生成自动加载文件,且产生聚合编译文件 bootstrap/compiled.php  
  7. php artisan dump-autoload:重新生成框架的自动加载文件,相当于 optimize 的再操作  
  8. php artisan clear-compiled:清除编译生成的文件,相当于 optimize 的反操作  
  9. php artisan migrate:执行数据迁移  
  10. php artisan routes:列出当前应用全部的路由规则  
  11. php artisan serve:使用 PHP 内置的开发服务器启动应用 【要求 PHP 版本在 5.4 或以上】  
  12. php artisan tinker:进入与当前应用环境绑定的 REPL 环境,相当于 Rails 框架的 rails console 命令  
  13. php artisan workbench 组织名/包名:这将在应用根目录产生一个名为 workbench 的文件夹,然后按 组织名/包名 的形式生成一个符合 Composer 标准的包结构,并自动安装必要的依赖【需要首先完善好 app/config/workbench.php 文件的内容】  
  14. php artisan cache:clear:清除应用程序缓存  
  15. php artisan command:make 命令名:在 app/commands 目录下生成一个名为 命令名.php 的自定义命令文件  
  16. php artisan controller:make 控制器名:在 app/controllers 目录下生成一个名为 控制器名.php 的控制器文件  
  17. php artisan db:seed:对数据库填充种子数据,以用于测试  
  18. php artisan key:generate:生成一个随机的 key,并自动更新到 app/config/app.ph 的 key 键值对  
  19. php artisan migrate:install:初始化迁移数据表  
  20. php artisan migrate:make 迁移名:这将在 app/database/migrations 目录下生成一个名为 时间+迁移名.php 的数据迁移文件,并自动执行一次 php artisan dump-autoload 命令  
  21. php artisan migrate:refresh:重置并重新执行所有的数据迁移  
  22. php artisan migrate:reset:回滚所有的数据迁移  
  23. php artisan migrate:rollback:回滚最近一次数据迁移  
  24. php artisan session:table:生成一个用于 session 的数据迁移文件

artisan 命令列表二

  1. Laravel Framework version 5.3.28  
  2.   
  3. Usage:  
  4.   command [options] [arguments]  
  5.   
  6. Options:  
  7.   -h, --help            显示帮助信息  
  8.   -q, --quiet           不要输出任何信息  
  9.   -V, --version         显示当前应用版本  
  10.       --ansi            强制 ANSI 输出  
  11.       --no-ansi         关闭 ANSI 输出  
  12.   -n, --no-interaction  不要询问任何交互问题  
  13.       --env[=ENV]       在当前环境下运行命令  
  14.   -v|vv|vvv, --verbose  升级详细信息: 1 正常输出, 2 更多详细信息 3 调试使用  
  15.   
  16. 可用的命令:  
  17.   clear-compiled       移除编译类文件  
  18.   down                 将应用程序置于维护模式  
  19.   env                  显示当前框架的环境 比如 local  
  20.   help                 显示一个命令的帮助信息 比如 php artisan help make:controller  
  21.   inspire              显示一个灌输的引用(inspiring quote)  
  22.   list                 列出所有命令  
  23.   migrate              运行数据库迁移  
  24.   optimize             优化框架以获得更好的性能  
  25.   serve                在PHP开发服务器上提供应用程序  
  26.   tinker               与您的应用程序交互  
  27.   up                   使应用程序退出维护模式  
  28.   
  29.  app  
  30.   app:name             设置应用命名空间  
  31.  auth  
  32.   auth:clear-resets    刷新过期密码重置令牌  
  33.  cache  
  34.   cache:clear          刷新应用程序缓存  
  35.   cache:table          为缓存数据库表创建迁移  
  36.  config  
  37.   config:cache         创建缓存文件以加快配置加载  
  38.   config:clear         删除配置缓存文件  
  39.  db  
  40.   db:seed              Seed the database with records  
  41.  event  
  42.   event:generate       基于注册生成缺少的事件和侦听器  
  43.  key  
  44.   key:generate         设置应用key  
  45.  make  
  46.   make:auth            搭建基本的登录和注册的视图和路由  
  47.   make:command         创建一个新的 Artisan 命令  
  48.   make:controller      创建一个新的 controller 类  
  49.   make:event           创建一个新的 event 类  
  50.   make:job             创建一个新的 job 类  
  51.   make:listener        创建一个新的 event listener 类  
  52.   make:mail            创建一个新的 email 类  
  53.   make:middleware      创建一个新的 middleware 类  
  54.   make:migration       创建一个新的 migration 文件  
  55.   make:model           创建一个新的 Eloquent model 类  
  56.   make:notification    创建一个新的 notification 类  
  57.   make:policy          创建一个新的 policy 类  
  58.   make:provider        创建一个新的 service provider 类  
  59.   make:request         创建一个新的 form request 类  
  60.   make:seeder          创建一个新的 seeder 类  
  61.   make:test            创建一个新的 test 类  
  62.  migrate  
  63.   migrate:install      创建迁移存储库  
  64.   migrate:refresh      重置并重新运行所有迁移  
  65.   migrate:reset        回滚所有数据库迁移  
  66.   migrate:rollback     回滚上次数据库迁移  
  67.   migrate:status       显示每个迁移的状态  
  68.  notifications  
  69.   notifications:table  为通知表创建迁移  
  70.  queue  
  71.   queue:failed         列出所有失败的队列作业s  
  72.   queue:failed-table   为失败的队列作业数据库表创建迁移  
  73.   queue:flush          清除所有失败的队列作业  
  74.   queue:forget         删除失败的队列作业  
  75.   queue:listen         监听一个给定的队列  
  76.   queue:restart        在其当前作业之后重新启动队列worker守护程序  
  77.   queue:retry          重试一个失败的队列任务  
  78.   queue:table          为队列作业数据库表创建迁移  
  79.   queue:work           开始作为守护程序在队列上处理作业  
  80.  route  
  81.   route:cache          创建路由缓存文件用于更快的路由注册  
  82.   route:clear          删除路由缓存文件  
  83.   route:list           列出所有注册的路由  
  84.  schedule  
  85.   schedule:run         运行已调度的命令  
  86.  session  
  87.   session:table        为会话数据库表创建迁移  
  88.  storage  
  89.   storage:link         创建符号链接 从 "public/storage" 到 "storage/app/public"  
  90.  vendor  
  91.   vendor:publish       从供应商包发布任何可发布的资产  
  92.  view  
  93.   view:clear           清除所有编译的视图文件  

artisan 命令使用不知道的,可以使用如下命令查看帮助信息

[plain]  view plain  copy
  1. php artisan help 命令  

比如查看 make:controller 如何使用

[plain]  view plain  copy
  1. wujiangwei:laravel wu$ php artisan help make:controller  
  2. Usage:  
  3.   make:controller [options] [--] <name>  
  4.   
  5. Arguments:  
  6.   name                  The name of the class  
  7.   
  8. Options:  
  9.   -m, --model[=MODEL]   Generate a resource controller for the given model.  
  10.   -r, --resource        Generate a resource controller class.  
  11.   -h, --help            Display this help message  
  12.   -q, --quiet           Do not output any message  
  13.   -V, --version         Display this application version  
  14.       --ansi            Force ANSI output  
  15.       --no-ansi         Disable ANSI output  
  16.   -n, --no-interaction  Do not ask any interactive question  
  17.       --env[=ENV]       The environment the command should run under  
  18.   -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug  
  19.   
  20. Help:  
  21.   Create a new controller class  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值