Sometimes, especially in bigger projects, we run into issue of writing a create migration for the same table, or even column that already exist.
Typical migration looks like this :
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
And if flights table already exists (for whatever reason), you would get an error. Solution to this is Schema::hasTable() method :
public function up()
{
if (!Schema::hasTable('flights')) {
Schema::create('flights', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
}
So, if table flights does not exist, then we create it.
Of course, it can be used in a positive way. For example, if we want to add a new column to existing table, then we may check if the table does exist.
Let’s combine this with another example and with another method Schema::hasColumn(), which has two parameters which are table name and column name:
public function up()
{
if (Schema::hasTable('flights')) {
Schema::table('flights', function (Blueprint $table) {
if (!Schema::hasColumn('flights', 'departure_time')) {
$table->timestamp('departure_time');
}
});
}
}
Credit to: https://bit.ly/3owBzwL
Recent Comments