用途:该技能面向 Laravel 多租户应用架构,将应用逻辑划分为中央(非租户)与租户专属两类上下文,用于构建需要完整数据隔离的 SaaS 系统。
主要能力:提供每租户独立数据库的隔离方案、查询自动作用域到当前租户、通过辅助类实现上下文感知、队列任务保留租户上下文;并给出中央与租户 Action、DTO、路由、模型的组织方式。
使用方式:中央 Action 管理租户及跨租户操作,租户 Action 在特定租户上下文中运行且查询自动作用域。通过 Landlord 服务类封装 Stancl Tenancy,提供 tenant()、initialize()、end()、runAsCentral()、runAs()、eachTenant() 等方法。租户识别可用基于域名、子域或请求头(如 X-Tenant)的中间件,路由分别以 tenant 与 central 中间件分组,并在 bootstrap 中配置路由。队列任务使用 TenantAwareJob 保留上下文。
适用场景:每个客户需要独立数据库、合规要求严格数据分离的 SaaS 应用。
限制:若仅需简单用户分段(用 user_id 作用域)或所有客户共享同一 schema,则不建议使用;应用复杂度不足以抵消其开销时也不适用。测试相关内容见 tenancy-testing.md,具体安装命令与版本要求暂未提供。