> Source: https://laravilt.com/docs/panel/tenancy/models

# Tenant Models

## Tenant Model

```php
use Laravilt\Panel\Models\Tenant;

$tenant = Tenant::create([
    'name' => 'Acme Corp',
    'slug' => 'acme',
    'email' => 'admin@acme.com',
    'owner_id' => $user->id,
]);
```

### Key Attributes

| Attribute | Type | Description |
|-----------|------|-------------|
| `id` | ULID | Primary key |
| `name` | string | Display name |
| `slug` | string | URL identifier |
| `database` | string | Database name |
| `owner_id` | int | Owner user ID |
| `settings` | array | Tenant settings |

### Methods

```php
use Laravilt\Panel\Models\Tenant;

// Relationships
$tenant->owner;
$tenant->users();
$tenant->domains();

// User management
$tenant->addUser($user, 'admin');
$tenant->removeUser($user);
$tenant->isOwner($user);

// Settings
$tenant->getSetting('feature.enabled', false);
$tenant->setSetting('feature.enabled', true);
```

## Domain Model

```php
use Laravilt\Panel\Models\Domain;

$domain = Domain::createSubdomain(
    tenant: $tenant,
    subdomain: 'acme',
    baseDomain: 'myapp.com',
    isPrimary: true
);

$tenant = Domain::findTenantByDomain('acme.myapp.com');
```

## Getting Current Tenant

```php
use Laravilt\Panel\Facades\Laravilt;

$tenant = Laravilt::getTenant();

if (Laravilt::hasTenant()) {
    $name = Laravilt::getTenant()->name;
}
```

## Next Steps

- [Middleware](https://github.com/laravilt/laravilt/blob/HEAD/docs/panel/tenancy/middleware) - Tenancy middleware
- [Configuration](https://github.com/laravilt/laravilt/blob/HEAD/docs/panel/tenancy/configuration) - Configuration options
- [Best Practices](https://github.com/laravilt/laravilt/blob/HEAD/docs/panel/tenancy/best-practices) - Tips and troubleshooting
