dropUnique(['zone_id','region_id','host_id','node_id']); $table->dropUnique(['zone_id','host_id','node_id','point_id']); $table->integer('hub_id')->nullable(); $table->foreign('hub_id')->references('id')->on('addresses'); $table->softDeletes(); }); DB::statement("ALTER TABLE addresses ALTER COLUMN region_id set NOT NULL"); DB::statement("ALTER TABLE addresses ALTER COLUMN host_id set NOT NULL"); DB::statement("CREATE UNIQUE INDEX active_addresses ON addresses (zone_id,region_id,host_id,node_id,point_id) WHERE active = true"); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('addresses', function (Blueprint $table) { $table->dropSoftDeletes(); $table->dropForeign(['hub_id']); $table->dropColumn('hub_id'); $table->dropIndex('active_addresses'); $table->unique(['zone_id','region_id','host_id','node_id']); $table->unique(['zone_id','host_id','node_id','point_id']); }); } }