Sometimes, especially in bigger projects, we run into issue of writing a create migration for the same table, or even column that already exist. Luckily, Laravel has a quick way of checking it.
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 table does exist.
Let's combine this with another example and with another method Schema::hasColumn(), which has two parameters - 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');
}
});
}
}
You can read more about migrations and its various features in the official documentation.
No comments or questions yet...