• Laravel Migrate


    artisan命令行创建migrate

    格式:

    php artisan make:migration YourFileName
    

    示例:

    php artisan make:migration create_books_table
    

    我们找到laravel目录下databasemigrations2017_XX_XX_XXXXXX_create_books_table.php

    注意:XX代表时间戳,因时而异

    <?php
    
    use IlluminateDatabaseSchemaBlueprint;
    use IlluminateDatabaseMigrationsMigration;
    
    class CreateBooksTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            //
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            //
        }
    }
    

    这里的CreateBooksTable类继承了Migration,我们看下Migration类

    namespace IlluminateDatabaseMigrations;
    abstract class Migration
    {
        /**
         * The name of the database connection to use.
         *
         * @var string
         */
        protected $connection;
        /**
         * Get the migration connection name.
         *
         * @return string
         */
        public function getConnection()
        {
            return $this->connection;
        }
    }
    

    这里我们把up函数改写成

    public function up()
    {
    	Schema::create('chs', function (Blueprint $table) {
    		$table->increments('id');			
    		$table->string('slug')->unique();//additional
    		$table->string('title');//additional
    		$table->text('content');//additional
    		$table->timestamps();
    		$table->timestamp('published_at')->index();//additional
    	});
    }
    

    同时参考以下文档,文档选自http://laravelbook.com/laravel-migrations-managing-databases/

    一切准备就绪,我们开始迁移

    php artisan migrate
    

    如果你迁移后发觉并不是你想要的数据表,可以回滚

    php artisan migrate:rollback
    

    这里要给大家提个醒,down方法一定要写,可能有些人这个方法会空着,觉得只要数据表创建出来了就没事了,但是一旦涉及rollback又没有down方法,你的migrate操作就是不可逆的!  

    就像这样:

    <?php
    
    use IlluminateDatabaseSchemaBlueprint;
    use IlluminateDatabaseMigrationsMigration;
    
    class CreateCommentsTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('comments', function (Blueprint $table) {
    			$table->increments('id');           
    			$table->integer('postid');
    			$table->string('title');//additional
    			$table->text('content');//additional
    			//$table->timestamps();
    			$table->timestamp('published_at')->index();//additional
    		});
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::drop('comments');
        }
    }
    

    Laravel使用了门面模式

    namespace IlluminateSupportFacades;
    /**
     * @see IlluminateDatabaseSchemaBuilder
     */
    class Schema extends Facade
    {
        /**
         * Get a schema builder instance for a connection.
         *
         * @param  string  $name
         * @return IlluminateDatabaseSchemaBuilder
         */
        public static function connection($name)
        {
            return static::$app['db']->connection($name)->getSchemaBuilder();
        }
        /**
         * Get a schema builder instance for the default connection.
         *
         * @return IlluminateDatabaseSchemaBuilder
         */
        protected static function getFacadeAccessor()
        {
            return static::$app['db']->connection()->getSchemaBuilder();
        }
    }
    

    本文为博主原创文章,转载请在明显位置注明出处: http://www.cnblogs.com/sweng

    本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。

  • 相关阅读:
    [转载]datatable中只取前7条数据
    [转载]序列化的作用
    [转载]ASP.NET几种清除页面缓存的方法
    Page_Init()和page_load()区别
    [转载]回调函数
    编程规约
    语法知识【Python核心编程】
    Web基础概念扫盲
    【Tomcat源码调试-1】环境搭建(MyEclipse)
    小希的数表题解
  • 原文地址:https://www.cnblogs.com/sweng/p/6358192.html
Copyright © 2020-2023  润新知