1. 我们处于本地开发阶段,数据使用种子(Seed)文件进行填充。
对于本地开发,如果想省事,可以直接在samples表的迁移文件中,添加上我们需要的栏目:
$table->string('url', 200)->nullable();
然后我们重置数据库并做种:
$ php artisan migrate:refresh --seed
这样就完成了。打开samples表,我们会发现新的栏目已经被创建。
注意,php artisan migrate:refresh命令相当于
$ php artisan migrate:reset $ php artisan migrate
所以我们经常会使用到。
2. 另一种情况,我们需要详细记录每一个数据库操作,例如在production环境下进行数据库修改。
首先我们需要添加一个package:
$ composer require doctrine/dbal
要进行表的修改必须添加以上包裹。
完成后我们需要创建一个新的迁移文件:
$ php artisan make:migration add_url_field_to_samples_table --table=samples
我们想要添加一个url栏目,并且让它在name之后,我们在Schema::table函数中填入以下代码:
<?php      
  
use Illuminate\Support\Facades\Schema;      
use Illuminate\Database\Schema\Blueprint;      
use Illuminate\Database\Migrations\Migration;      
  
class ModifySamplesTable extends Migration      
{      
  /**      
   * Run the migrations.      
   *      
   * @return void      
   */      
  public function up()      
  {      
    Schema::table('samples', function (Blueprint $table) {      
      $table->string('url', 200)->after('name');   
    });      
  }      
  
  /**      
   * Reverse the migrations.      
   *      
   * @return void      
   */      
  public function down()      
  {      
    Schema::table('samples', function (Blueprint $table) {      
      $table->dropColumn('url');     
    });      
  }      
}
完成后,我们运行migrate:
$ php artisan migrate
这样,url就被添加进了sample表中,并且位置处于name之后。
我们在samples表中插入了新的url栏目,那么现在如果我们想把name这个栏目长度限制从100修改为50,该怎么做呢?
同理,我们需要先创建一个migration:
$ php artisan make:migration modify_name_column_in_samples_table --table=samples
在migration文件中,我们添加以下代码:
<?php      
  
use Illuminate\Support\Facades\Schema;      
use Illuminate\Database\Schema\Blueprint;      
use Illuminate\Database\Migrations\Migration;      
  
class ModifyNameColumnInSamplesTable extends Migration      
{      
  /**      
   * Run the migrations.      
   *      
   * @return void      
   */      
  public function up()      
  {      
    Schema::table('samples', function (Blueprint $table) {      
      $table->string('name', 50)->change();       
    });      
  }      
  
  /**      
   * Reverse the migrations.      
   *      
   * @return void      
   */      
  public function down()      
  {      
    Schema::table('samples', function (Blueprint $table) {      
      $table->string('name', 100)->change();      
    });      
  }      
}
      内容版权声明:除非注明,否则皆为本站原创文章。
