【PHP】php artisan 常见指令

Artisan是什么?

Artisan是一个命令行工具,它是Laravel框架的一部分,它允许开发者通过命令行界面执行各种操作,从创建数据库表到生成模型、控制器和视图等等。Artisan的一大优势是可以轻松地创建自定义命令,开发者可以通过编写自己的Artisan命令来执行自定义任务,以满足特定需求,这使得Artisan在Laravel开发中非常灵活和强大。

常用的Artisan指令及其作用

运行 php artisan指令(也可以是php artisan list 或 php artisan -v指令),可以查看所有的artisan指令。以下列出常见的artisan指令。

php artisan make:model   userModel 这个命令用于生成一个新的模型类。

php artisan make:controller  userController 这个命令用于创建一个新的控制器类。

php artisan help make:controller 这个命令用于列出命令的帮助内容。

php artisan make:controller  userController  –resource 这个命令用于生成RESTful API风格的控制器,创建一个包含了7个RESTful方法(index、create、store、show、edit、update、destroy)的控制器。

php artisan make:migration  create_user_table 这个命令用于创建一个新的数据库迁移。上述命令将在database/migrations目录下生成一个名为“xxxx_xx_xx_xxxxxx_create_users_table”的迁移文件。在迁移文件中,您可以定义User表的结构与字段。

public function up()
{
    Schema::create('users',function(Blueprint $table){
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

php artisan migrate   这个命令用于执行所有尚未执行的数据库迁移。执行此命令,将迁移应用到数据库中。

php artisan make:seeder UsersTableSeeder ,创建一个Seeder,其中UsersTableSeeder是Seeder的名称。执行以上命令后,Laravel会在/database/seeds目录下生成一个UsersTableSeeder.php文件,该文件是一个类,可以在其中添加插入数据的操作。

php artisan db:seed 运行Seeder。此命令将执行/database/seeds目录下的所有Seeder类,并将记录插入数据库中。

php artisan route:list   这个命令用于列出应用程序中定义的所有路由。

自定义指令

Artisan除了默认指令外,还可以提供自定义指令。

自定义指令保存在 app/Console/Commands 目录中,在第一次成功运行 php artisan make:command 指令后创建,如 php artisan make:command SendEmails。

生成命令后,请先修改类文件中的 signature 和 description 属性以便你在使用 Artisan list 命令时清楚的知道该命令的用法。在 handle 方法中编写执行命令的业务逻辑。下面是官网的示例用法:

<?php

namespace App\Console\Commands;

use App\Models\User;
use App\Support\DripEmailer;
use Illuminate\Console\Command;

class SendEmails extends Command
{
    /**
    * 命令名称及签名
    *
    * @var string
    */
    protected $signature = 'email:send {user}';

    /**
    * 命令描述
    *
    * @var string
    */
    protected $description = 'Send drip e-mails to a user';

    /**
    * 创建命令
    *
    * @return void
    */
    public function __construct()
    {
        parent::__construct();
    }

    /**
    * 执行命令
    *
    * @param \App\Support\DripEmailer $drip
    * @return mixed
    */
    public function handle(DripEmailer $drip)
    {
        $drip->send(User::find($this->argument('user')));
    }
}

关于自定义指令的更详细用法,如默认参数、选填参数、输入数组、交互式输入、输入描述、编写输出、注册等,请查阅更多的网络资料。