我有一个项目需要使用多数据库实现多租户。
我已经完成了安装过程,并为我的租户创建了一个域,但每次我尝试访问它时都会收到此错误:
Call to undefined method Stancl\Tenancy\Database\Models\Tenant::domains()
domains 函数是在一个名为 HasDomains 的特征上找到的,但我不明白为什么 Laravel 无法解析它。
这是我的模型:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Stancl\Tenancy\Contracts\TenantWithDatabase;
use Stancl\Tenancy\Database\Concerns\HasDatabase;
use Stancl\Tenancy\Database\Concerns\HasDomains;
use Stancl\Tenancy\Database\Models\Tenant as ModelsTenant;
class Tenant extends ModelsTenant implements TenantWithDatabase
{
use HasFactory;
use HasDatabase;
use HasDomains;
}
有什么想法吗?
您创建了租户吗?
>> $tenant1 = Tenant::create(['id' => 'foo']);
>> $tenant1->domains()->create(['domain' => 'foo.saas.test']);
因为如错误所示,它调用
HasDomain
并且该域不存在于数据库中。
如果你这样做,它应该会修复。并注意,将
foo.saas.test
更改为托管项目/租户 URL 的域。