Laravel has migrations built in :) http://laravel.com/docs/migrations
Simply run
php artisan make:migration migration_name_here
and it will create a migration under app/database/migrations. You could then use Laravel's database classes in your up() and down() methods.
Let's use this as an example...
class SplitColumn extends Migration {
public function up()
{
Schema::table('table_name', function($table)
{
$table->string('new_column');
$table->string('new_column_b');
});
$results = DB::table('table_name')->select('old_column')->get();
foreach($results as $result)
{
$split_value = explode("|", $result->old_column);
DB::table('table_name')->insert([
"new_column" => $split_value[0],
"new_column_b" => $split_value[1]
]);
}
Schema::table('table_name', function($table)
{
$table->dropColumn('old_column');
});
}
public function down()
{
Schema::table('table_name', function($table)
{
$table->string('old_column');
});
$results = DB::table('table_name')->select('new_column', 'new_column_b')->get();
foreach($results as $result)
{
$merged_value = implode("|", [$result->new_column, $result->new_column_b]);
DB::table('table_name')->insert([
"old_column" => $merged_value
]);
}
Schema::table('table_name', function($table)
{
$table->dropColumn('new_column');
$table->dropColumn('new_column_b');
});
}
}