> */ public static function aliases(): array { return [ 'address' => Address::class, 'company' => Company::class, 'company_invitation' => CompanyInvitation::class, 'company_setting' => CompanySetting::class, 'country' => Country::class, 'currency' => Currency::class, 'custom_field' => CustomField::class, 'custom_field_value' => CustomFieldValue::class, 'customer' => Customer::class, 'email_log' => EmailLog::class, self::ESTIMATE_ALIAS => Estimate::class, 'estimate_item' => EstimateItem::class, 'exchange_rate_log' => ExchangeRateLog::class, 'exchange_rate_provider' => ExchangeRateProvider::class, 'expense' => Expense::class, 'expense_category' => ExpenseCategory::class, 'file_disk' => FileDisk::class, 'impersonation_log' => ImpersonationLog::class, self::INVOICE_ALIAS => Invoice::class, 'invoice_item' => InvoiceItem::class, 'item' => Item::class, 'marketplace_credential' => MarketplaceCredential::class, 'marketplace_operation' => MarketplaceOperation::class, 'module' => Module::class, 'note' => Note::class, self::PAYMENT_ALIAS => Payment::class, 'payment_allocation' => PaymentAllocation::class, 'payment_method' => PaymentMethod::class, 'recurring_invoice' => RecurringInvoice::class, 'setting' => Setting::class, 'tax' => Tax::class, 'tax_type' => TaxType::class, 'transaction' => Transaction::class, 'unit' => Unit::class, 'user' => User::class, 'user_setting' => UserSetting::class, 'bouncer_ability' => Ability::class, 'bouncer_role' => Role::class, ]; } public static function enforce(): void { Relation::enforceMorphMap(self::aliases()); } /** * @param class-string $model */ public static function aliasFor(string $model): string { $alias = array_search($model, self::aliases(), true); if (! is_string($alias)) { throw new InvalidArgumentException("Model [{$model}] has no stable database identity."); } return $alias; } /** * Preserve the model discriminator exposed by the existing v1 API. */ public static function publicType(string $databaseType): string { $model = self::aliases()[$databaseType] ?? null; if ($model === null || str_starts_with($databaseType, 'bouncer_')) { return $databaseType; } return 'App\\Models\\'.class_basename($model); } }