How to drop column only if already exists using Laravel migrations? Here is how:
First we will create custom method called dropColumnIfExists , this method we can put in Helper file:
public function dropColumnIfExists($myTable, $column)
{
if (Schema::hasColumn($myTable, $column))
{
Schema::table($myTable, function (Blueprint $table) use($column)
{
$table->dropColumn($column);
});
}
}
So now in our migration file we will include this helper method:
use App\Http\Controllers\Helper;
and now inside of our up() method we can use it:
public function up()
{
Schema::table('users', function (Blueprint $table) {
$helper = new Helper();
$helper->dropColumnIfExists('users','nickname'); // remove field nickname if exists on users table
$helper->dropColumnIfExists('users','description'); //remove field description if exists on users table
});
}
So, now we are using our custom dropColumnIfExist() method which will remove table field only if exists.
Now you can run migrate method as usual:
php artisan migrate
done! 👨💻