zoukankan      html  css  js  c++  java
  • 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 未本地化版本许可协议进行许可。

  • 相关阅读:
    Ceph性能优化
    查看linux中的TCP连接数
    从 PC 卸载 Office
    VDI数据恢复
    xencenter迁移云主机方法
    深入解析UUID及其应用(转载)
    XenServer master主机的作用
    解决CentOS下可以ping通ip ping不通域名
    利用Powershell查询AD中账号属性
    创建进程的第二种方法,以后很多都用这个方法。
  • 原文地址:https://www.cnblogs.com/sweng/p/6358192.html
Copyright © 2011-2022 走看看