Adding multi-tenancy to an existing Laravel app is one of those tasks that touches everything — database queries, middleware, caching, queues, file storage. Claude can scaffold the whole pattern for you.
Implement single-database multi-tenancy in my Laravel app using
a tenant_id column. Add a global scope to all tenant-aware models,
middleware to resolve the current tenant from the subdomain, and
a trait I can apply to any model. Make sure queued jobs preserve
the tenant context.
Claude generates the full stack — a BelongsToTenant trait with automatic scoping, ResolveTenant middleware, and a TenantScope global scope:
trait BelongsToTenant
{
protected static function bootBelongsToTenant(): void
{
static::creating(fn ($model) =>
$model->tenant_id = app('tenant')->id
);
static::addGlobalScope(new TenantScope);
}
}
For database-per-tenant setups, ask Claude to handle the connection switching:
Switch to a database-per-tenant strategy. Each tenant gets their
own database. Configure dynamic database connections, tenant-aware
migrations, and a command to provision new tenant databases.
Claude also handles the easy-to-forget parts — cache key prefixing, filesystem disk scoping, and making sure artisan tinker sessions are tenant-aware.
Multi-tenancy is an architecture-wide concern — let Claude wire it all up consistently instead of missing edge cases.
Log in to leave a comment.
The /security-review command scans your uncommitted changes for injection vectors, auth gaps, hardcoded secrets, and other common vulnerabilities.
The SessionStart hook fires when any session begins or resumes, making it ideal for loading environment variables and running one-time setup scripts.
Ask Claude to write property-based tests for your functions using fast-check — it identifies the mathematical invariants in your code and generates tests that cover inputs you'd never enumerate by hand.