id(); $table->string('code'); $table->string('name'); }); Schema::create('tenants', function (Blueprint $table): void { $table->id(); $table->foreignId('client_id'); $table->string('codigo'); }); Schema::create('events', function (Blueprint $table): void { $table->id(); $table->string('tenant_code'); $table->string('title'); $table->timestamps(); }); DB::table('clients')->insert([ ['id' => 10, 'code' => 'tenant-client', 'name' => 'Tenant Client'], ['id' => 11, 'code' => 'event-client', 'name' => 'Event Client'], ]); DB::table('tenants')->insert(['id' => 20, 'client_id' => 10, 'codigo' => 'tenant']); DB::table('events')->insert([ 'id' => 30, 'tenant_code' => 'tenant', 'title' => 'Event', 'created_at' => now(), 'updated_at' => now(), ]); $migration = require database_path('migrations/2026_09_28_000000_add_client_id_to_events.php'); $migration->up(); $event = Event::query()->findOrFail(30); $this->assertSame(10, $event->effectiveClient()->id); $event->update(['client_id' => 11]); $this->assertSame(11, $event->fresh()->effectiveClient()->id); $this->assertTrue(Client::query()->findOrFail(11)->events()->whereKey(30)->exists()); } }