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(); }); } }
内容版权声明:除非注明,否则皆为本站原创文章。