Want to change the default Laravel User model to use UUID instead of the default auto-increment ID? Here are the changes you need to make.
Step 1. Migration for users.
The main migration for the users table: change ->id() to uuid('id')->primary().
database/migrations/2014_10_12_000000_create_users_table.php:
Schema::create('users', function (Blueprint $table) {    $table->id();     $table->uuid('id')->primary(); 
Two things to notice:
- The default 
->uuid()would create a fielduuid, so if you want to stick to theid, you need to specify it. - Also, default 
uuid()doesn't make that field a primary key, so you need to specify->primary(). 
Step 2. Other Migrations to users.
All the migrations with foreign keys to the users table should change to foreignUuid().
$table->foreignId('user_id')->constrained(); $table->foreignUuid('user_id')->constrained(); 
Also, polymorphic relations for the default personal_access_tokens table:
Schema::create('personal_access_tokens', function (Blueprint $table) {    $table->morphs('tokenable');     $table->uuidMorphs('tokenable'); 
Step 3. User Model: Add Trait
Finally, add a trait HasUuids to the User model.
app/Models/User.php:
use Illuminate\Database\Eloquent\Concerns\HasUuids; class User extends Model{    use HasUuids;
This will auto-generate UUIDs for every new User record.
This HasUuids feature appeared in the Laravel 9.30 version. Here's my video about it.
And that's it. Every new User would get a UUID automatically, like "8f8e8478-9035-4d23-b9a7-62f4d2612ce5".
I've performed a similar refactoring in my latest course about Travel API: watch this video (UUIDs are at the end, from 19:07)
Or, watch/read the full 2-hour course, creating a project from a real job interview task: Laravel Travel Agency API From Scratch
                                                    
                                                    
                                                    
You need to check sessions table and edit the foreign id user_id :
Schema::create('sessions', function (Blueprint $table) { $table->string('id')->primary(); $table->foreignId('user_id')->nullable()->index(); $table->string('ip_address', 45)->nullable(); $table->text('user_agent')->nullable(); $table->longText('payload'); $table->integer('last_activity')->index(); });
To be like this: Schema::create('sessions', function (Blueprint $table) { $table->string('id')->primary(); $table->foreignUuid('user_id')->nullable()->index(); $table->string('ip_address', 45)->nullable(); $table->text('user_agent')->nullable(); $table->longText('payload'); $table->integer('last_activity')->index(); });