diff --git a/assets/config.php b/assets/config.php
index 7aff2b65..2827532a 100644
--- a/assets/config.php
+++ b/assets/config.php
@@ -215,4 +215,12 @@ return [
'--class' => 'DatabaseSeeder', // root seeder class
// '--force' => true,
],
+
+ /**
+ * Single-database tenancy config.
+ */
+ 'single_db' => [
+ /** The name of the column used by models with the BelongsToTenant trait. */
+ 'tenant_id_column' => 'tenant_id',
+ ],
];
diff --git a/phpunit.xml b/phpunit.xml
index 28fc8a08..9d2b9339 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -35,4 +35,4 @@
-
\ No newline at end of file
+
diff --git a/src/Database/Concerns/BelongsToTenant.php b/src/Database/Concerns/BelongsToTenant.php
index ade966a8..23c66332 100644
--- a/src/Database/Concerns/BelongsToTenant.php
+++ b/src/Database/Concerns/BelongsToTenant.php
@@ -12,11 +12,9 @@ use Stancl\Tenancy\Database\TenantScope;
*/
trait BelongsToTenant
{
- public static $tenantIdColumn = 'tenant_id';
-
public function tenant()
{
- return $this->belongsTo(config('tenancy.tenant_model'), BelongsToTenant::$tenantIdColumn);
+ return $this->belongsTo(config('tenancy.tenant_model'), config('tenancy.single_db.tenant_id_column'));
}
public static function bootBelongsToTenant(): void
@@ -24,9 +22,9 @@ trait BelongsToTenant
static::addGlobalScope(new TenantScope);
static::creating(function ($model) {
- if (! $model->getAttribute(BelongsToTenant::$tenantIdColumn) && ! $model->relationLoaded('tenant')) {
+ if (! $model->getAttribute(config('tenancy.single_db.tenant_id_column')) && ! $model->relationLoaded('tenant')) {
if (tenancy()->initialized) {
- $model->setAttribute(BelongsToTenant::$tenantIdColumn, tenant()->getTenantKey());
+ $model->setAttribute(config('tenancy.single_db.tenant_id_column'), tenant()->getTenantKey());
$model->setRelation('tenant', tenant());
}
}
diff --git a/src/Database/Concerns/HasScopedValidationRules.php b/src/Database/Concerns/HasScopedValidationRules.php
index ae5c7fc7..8288f2e3 100644
--- a/src/Database/Concerns/HasScopedValidationRules.php
+++ b/src/Database/Concerns/HasScopedValidationRules.php
@@ -11,11 +11,11 @@ trait HasScopedValidationRules
{
public function unique($table, $column = 'NULL')
{
- return (new Unique($table, $column))->where(BelongsToTenant::$tenantIdColumn, $this->getTenantKey());
+ return (new Unique($table, $column))->where(config('tenancy.single_db.tenant_id_column'), $this->getTenantKey());
}
public function exists($table, $column = 'NULL')
{
- return (new Exists($table, $column))->where(BelongsToTenant::$tenantIdColumn, $this->getTenantKey());
+ return (new Exists($table, $column))->where(config('tenancy.single_db.tenant_id_column'), $this->getTenantKey());
}
}
diff --git a/src/Database/Concerns/InvalidatesResolverCache.php b/src/Database/Concerns/InvalidatesResolverCache.php
index 82a85997..fee3a076 100644
--- a/src/Database/Concerns/InvalidatesResolverCache.php
+++ b/src/Database/Concerns/InvalidatesResolverCache.php
@@ -11,7 +11,7 @@ use Stancl\Tenancy\Resolvers\Contracts\CachedTenantResolver;
trait InvalidatesResolverCache
{
/** @var array> */
- public static $resolvers = [
+ public static $resolvers = [ // todo@deprecated, move this to a config key? related to a todo in InvalidatesTenantsResolverCache
Resolvers\DomainTenantResolver::class,
Resolvers\PathTenantResolver::class,
Resolvers\RequestDataTenantResolver::class,
diff --git a/src/Database/TenantScope.php b/src/Database/TenantScope.php
index 8b887ac0..43214959 100644
--- a/src/Database/TenantScope.php
+++ b/src/Database/TenantScope.php
@@ -17,7 +17,7 @@ class TenantScope implements Scope
return;
}
- $builder->where($model->qualifyColumn(BelongsToTenant::$tenantIdColumn), tenant()->getTenantKey());
+ $builder->where($model->qualifyColumn(config('tenancy.single_db.tenant_id_column')), tenant()->getTenantKey());
}
public function extend(Builder $builder): void
diff --git a/tests/SingleDatabaseTenancyTest.php b/tests/SingleDatabaseTenancyTest.php
index 8914a6d7..ec0a0edf 100644
--- a/tests/SingleDatabaseTenancyTest.php
+++ b/tests/SingleDatabaseTenancyTest.php
@@ -13,8 +13,6 @@ use Stancl\Tenancy\Database\Concerns\HasScopedValidationRules;
use Stancl\Tenancy\Tests\Etc\Tenant as TestTenant;
beforeEach(function () {
- BelongsToTenant::$tenantIdColumn = 'tenant_id';
-
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('text');
@@ -144,7 +142,7 @@ test('tenant id is not auto added when creating primary resources in central con
});
test('tenant id column name can be customized', function () {
- BelongsToTenant::$tenantIdColumn = 'team_id';
+ config(['tenancy.single_db.tenant_id_column' => 'team_id']);
Schema::drop('comments');
Schema::drop('posts');