1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-13 04:04:04 +00:00

Respect custom columns during tenant creation (#191)

This commit is contained in:
Samuel Štancl 2019-10-20 00:27:52 +02:00 committed by GitHub
parent 479df83027
commit f489aba819
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 5 deletions

View file

@ -103,7 +103,9 @@ class DatabaseStorageDriver implements StorageDriver
public function createTenant(Tenant $tenant): void
{
$this->centralDatabase->transaction(function () use ($tenant) {
Tenants::create(['id' => $tenant->id, 'data' => json_encode($tenant->data)])->toArray();
Tenants::create(array_merge(Tenants::encodeData($tenant->data), [
'id' => $tenant->id,
]))->toArray();
$domainData = [];
foreach ($tenant->domains as $domain) {

View file

@ -33,6 +33,24 @@ class TenantModel extends Model
return config('tenancy.storage_drivers.db.custom_columns', []);
}
public static function encodeData(array $data)
{
$result = [];
$jsonData = [];
foreach ($data as $key => $value) {
if (in_array($key, static::customColumns(), true)) {
$result[$key] = $value;
} else {
$jsonData[$key] = $value;
}
}
$result['data'] = $jsonData ? json_encode($jsonData) : '{}';
return $result;
}
public static function getAllTenants(array $ids)
{
$tenants = $ids ? static::findMany($ids) : static::all();