Many times when you are working on SQLite database with Laravel you might have come across a wired error that SQLite doesn't support dropping foreign keys.
The reason is SQLite database has no concept called foreign keys. Let's fix this issue in Laravel.
To fix the DBAL issues make sure to install the following package.
composer require doctrine/dbal
Example 1
public function down()
{
Schema::table('comments', function (Blueprint $table) {
$table->dropForeign(['parent_id']);
$table->dropColumn(['parent_id']);
});
}
Example 1
public function down()
{
Schema::table('comments', function (Blueprint $table) {
/** Make sure to put this condition to check if driver is SQLite */
if (DB::getDriverName() !== 'sqlite') {
$table->dropForeign(['parent_id']);
}
$table->dropColumn(['parent_id']);
});
}
You can put this condition for multiple columns too.
Example 2
public function down()
{
Schema::table('payments', function (Blueprint $table) {
if (DB::getDriverName() !== 'sqlite') {
$table->dropForeign(['coupon_id']);
$table->dropForeign(['currency_id']);
}
$table->dropColumn(['status', 'currency_id', 'coupon_id', 'notes', 'invoice_number']);
});
}
I hope this might have solved your issues. Happy coding.
Debugging Laravel Queue Email Issues
Laravel 7.x Multiple Database Connections, Migrations, Relationships & Querying
GitHub Login With PHP Laravel Socialite
Firebase Cloud Messaging (FCM) Browser Web Push Notifications Using Javascript And PHP
Plain PHP Resumable Large File Uploads In Chunks Using FlowJs
Sass or SCSS @function vs @mixin
Factories To Speed Up Test-Driven Development In Laravel
Free SSL Certificate In cPanel With ZeroSSL & Certbot