• Laravel5.0学习--03 Artisan命令


    本文以laravel5.0.22为例。

    简介

    Artisan 是 Laravel 内置的命令行接口。它提供了一些有用的命令协助您开发,它是由强大的 Symfony Console 组件所驱动。利用它,我们可以快速的新建Controller、Model等类。

    如何使用

    创建控制器

    1)创建一个新的资源控制器

    $ php artisan make:controller UserController
    
    Controller created successfully.
    

    会在appHttpControllers生成UserController.php:

    <?php
    
    namespace AppHttpControllers;
    
    use IlluminateHttpRequest;
    
    use AppHttpRequests;
    use AppHttpControllersController;
    
    class UserController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return IlluminateHttpResponse
         */
        public function index()
        {
            //
        }
    
        /**
         * Show the form for creating a new resource.
         *
         * @return IlluminateHttpResponse
         */
        public function create()
        {
            //
        }
    
        /**
         * Store a newly created resource in storage.
         *
         * @param  IlluminateHttpRequest  $request
         * @return IlluminateHttpResponse
         */
        public function store(Request $request)
        {
            //
        }
    
        /**
         * Display the specified resource.
         *
         * @param  int  $id
         * @return IlluminateHttpResponse
         */
        public function show($id)
        {
            //
        }
    
        /**
         * Show the form for editing the specified resource.
         *
         * @param  int  $id
         * @return IlluminateHttpResponse
         */
        public function edit($id)
        {
            //
        }
    
        /**
         * Update the specified resource in storage.
         *
         * @param  IlluminateHttpRequest  $request
         * @param  int  $id
         * @return IlluminateHttpResponse
         */
        public function update(Request $request, $id)
        {
            //
        }
    
        /**
         * Remove the specified resource from storage.
         *
         * @param  int  $id
         * @return IlluminateHttpResponse
         */
        public function destroy($id)
        {
            //
        }
    }
    

    默认创建的控制器里包含资源路由所需的所有方法。如果我们不需要里面的内容,可以加--plain

    $ php artisan make:controller --plain UserController
    

    当然,我们也可以指定生成控制器的路径:

    php artisan make:controller App\Admin\Http\Controllers\DashboardController
    

    那么生成的控制器的命名空间也会跟着变化:

    namespace AppAdminHttpControllers;
    

    生成模型

    创建一个新的 Eloquent 模型类:

    php artisan make:model User
    

    生成User.php:

    <?php
    
    namespace App;
    
    use IlluminateDatabaseEloquentModel;
    
    class User extends Model
    {
    
    }
    

    更多用法

    php artisan list #查看所有可以使用的 Artisan 命令
    php artisan help migrate #浏览命令的帮助
    php artisan --version #显示目前的 Laravel 版本
    
    php artisan down #进入维护模式
    php artisan up #退出维护模式
    
    php artisan make:provider name #创建一个新的服务提供者类
    php artisan make:request name #创建一个新的表单请求类
    
    php artisan migrate #进行数据库迁移(migration)
    php artisan make:migration create_article_table #创建article表结构
    

    使用migration新建表结构

    生成模型文件:

    php artisan make:model Article
    

    首先创建表结构的类文件:

    $ php artisan make:migration create_article_table
    
    Created Migration: 2016_09_10_020228_create_article_table
    

    在databasemigrations目录生成了2016_09_10_020228_create_article_table.php。该文件有个up方法,我们修改:

    <?php
    
    use IlluminateDatabaseSchemaBlueprint;
    use IlluminateDatabaseMigrationsMigration;
    
    class CreateArticleTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('articles', function(Blueprint $table){
                $table->increments('id');
                $table->string('title');
                $table->text('body')->nullable();
                $table->integer('user_id');
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            //
        }
    }
    
    

    这几行代码描述的是 Article 对应的数据库中那张表的结构。Laravel 默认 Model 对应的表名是这个英文单词的复数形式,在这里,就是 articles。接下来让我们把 PHP 代码变成真实的 MySQL 中的数据表,运行命令:

    $ php artisan migrate
    
    Migrated: 2016_09_10_020228_create_article_table
    

    执行成功后,articles 表已经出现在数据库里了:

    CREATE TABLE `articles` (                                     
    	`id` int(10) unsigned NOT NULL AUTO_INCREMENT,                  
    	`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,          
    	`body` text COLLATE utf8_unicode_ci,                            
    	`user_id` int(11) NOT NULL,                                     
    	`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',  
    	`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',  
    	PRIMARY KEY (`id`)                                              
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 
    

    articles里可以改为你想要的名字。完成后数据库里还会多了个migrations表,用来记录数据库迁移信息。

    Seeder

    database/seeds下则对应相应的数据库改动信息,包含数据。

    Seeder 解决的是我们在开发 web 应用的时候,需要手动向数据库中填入假数据的繁琐低效问题。

    运行以下命令创建 Seeder 文件:

    $ php artisan make:seeder ArticleSeeder
    
    Seeder created successfully.
    

    我们会发现 database/seeds 里多了一个文件 ArticleSeeder.php,修改此文件中的 run 函数为:

    public function run()
    {
        DB::table('articles')->delete();
    
        for ($i=0; $i < 10; $i++) {
            AppArticle::create([
                'title'   => 'Title '.$i,
                'body'    => 'Body '.$i,
                'user_id' => 1,
            ]);
        }
    }
    

    上面代码中的 AppArticle 为命名空间绝对引用。接下来我们把 ArticleSeeder 注册到系统内。修改 database/seeds/DatabaseSeeder.php 中的 run 函数为:

    public function run()
    {
        $this->call(ArticleSeeder::class);
    }
    

    由于 database 目录没有像 app 目录那样被 composer 注册为 psr-4 自动加载,采用的是 psr-0 classmap 方式,所以我们还需要运行以下命令把 ArticleSeeder.php 加入自动加载系统,避免找不到类的错误:

    $ composer dump-autoload
    

    然后执行 seed:

    $ php artisan db:seed
    
    Seeded: ArticleSeeder
    

    这时候刷新一下数据库中的 articles 表,会发现已经被插入了 10 行假数据。

    参考:
    1、Laravel 5.1 LTS 速查表
    https://cs.phphub.org/#artisan
    2、Laravel 5.0 中文文档:Artisan 命令行接口
    http://laravel-china.org/docs/5.0/artisan
    3、2016 版 Laravel 系列入门教程(一)
    https://github.com/johnlui/Learn-Laravel-5/issues/4

  • 相关阅读:
    persistence_timeout ,域名请求登录后一操作即被踢出,,KeepAlive,lvs
    记录因xen而导致lvs,realserver转发activeconn为0
    html5各种页面切换效果和模态对话框
    [设计模式] javascript 之 抽象工厂模式
    jQuery源码分析-构造函数详解
    CSS3动画的回调处理
    jQuery load()方法用法集锦!
    css控制input标签
    分享22款响应式的 jQuery 图片滑块插件
    Jquery取得iframe中元素的几种方法(转载)
  • 原文地址:https://www.cnblogs.com/52fhy/p/5859027.html
Copyright © 2020-2023  润新知