The error indicates that there’s an attempt to access a column named ‘provider’ in a database table, but this column doesn’t exist. Laravel Passport, starting from version 10.0, introduces support for multiple guard user providers, requiring the addition of a ‘provider’ column to the ‘oauth_clients’ database table.
Solution: Upgrading Passport and Adding the ‘provider’ Column
To resolve this issue, you need to upgrade Passport to version 10.0 or later and add the ‘provider’ column to the ‘oauth_clients’ table. Here are the steps:
1. Upgrade Passport to Version 10.0
In your terminal, navigate to your Laravel project’s root directory and run the following Composer command to upgrade Passport:
composer require laravel/passport:^your version
2. Add the ‘provider’ Column to the ‘oauth_clients’ Table
After upgrading Passport, you need to add the ‘provider’ column to the ‘oauth_clients’ table. If you have not previously published the Passport migrations, you can manually add the column using a migration.
Create a new migration using the following command:
php artisan make:migration add_provider_to_oauth_clients --table=oauth_clients
Open the generated migration file (located in the ‘database/migrations’ directory) and add the ‘provider’ column definition:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddProviderToOauthClients extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('oauth_clients', function (Blueprint $table) {
$table->string('provider')->after('secret')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('oauth_clients', function (Blueprint $table) {
$table->dropColumn('provider');
});
}
}
Run the migration to apply the changes:
php artisan migrate
After completing these steps, retry the operation that resulted in the ‘Column not found: 1054 Unknown column ‘provider’ in ‘field” error. The ‘provider’ column should now exist in the ‘oauth_clients’ table, resolving the issue.
[…] Resolving SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘provider’ in ‘field’ […]