Laravel Artisan常用命令

2018-02-11  本文已影响79人  VitaAin

  1. Controller 控制器

    // 创建一个控制器
    php artisan make:controller XXXController
    // 创建Rest风格资源控制器
    php artisan make:controller PhotoController --resource
    // 指定创建位置 在app目录下创建TestController
    php artisan make:controller App\TestController
    

  2. Model

    // 指定路径创建
    php artisan make:Model App\\Models\\User(linux or macOs 加上转义符)
    

  3. Migration 数据迁移

    // 数据迁移
    php artisan migrate
    // 创建迁移
    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
    

  4. Seeder 数据填充

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

  5. Middleware 中间件

    php artisan make:middleware XXX
    

  6. Route 路由

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

  7. 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.");
    }
    

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

    // 以下命令生成文件 app/Console/Commands/TopicMakeExcerptCommand.php
    
    php artisan make:console TopicMakeExcerptCommand --command=topics:excerpt123
    
    //在 app/Console/Kernel.php 文件里面, 添加以下
    protected $commands = [
            \App\Console\Commands\TopicMakeExcerptCommand::class,
        ];
    //激活artisan命令行。12345
    //在生成的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 
    
上一篇下一篇

猜你喜欢

热点阅读