mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 21:54:03 +00:00
DB transactions
This commit is contained in:
parent
a5a9f47eaa
commit
46609c5b0d
2 changed files with 27 additions and 20 deletions
|
|
@ -90,27 +90,31 @@ class DatabaseStorageDriver implements StorageDriver
|
||||||
|
|
||||||
public function updateTenant(Tenant $tenant): void
|
public function updateTenant(Tenant $tenant): void
|
||||||
{
|
{
|
||||||
Tenants::find($tenant->id)->putMany($tenant->data);
|
DB::transaction(function () use ($tenant) {
|
||||||
|
Tenants::find($tenant->id)->putMany($tenant->data);
|
||||||
|
|
||||||
$original_domains = Domains::where('tenant_id', $tenant->id)->get()->map(function ($model) {
|
$original_domains = Domains::where('tenant_id', $tenant->id)->get()->map(function ($model) {
|
||||||
return $model->domain;
|
return $model->domain;
|
||||||
})->toArray();
|
})->toArray();
|
||||||
$deleted_domains = array_diff($original_domains, $tenant->domains);
|
$deleted_domains = array_diff($original_domains, $tenant->domains);
|
||||||
|
|
||||||
Domains::whereIn('domain', $deleted_domains)->delete();
|
Domains::whereIn('domain', $deleted_domains)->delete();
|
||||||
|
|
||||||
foreach ($tenant->domains as $domain) {
|
foreach ($tenant->domains as $domain) {
|
||||||
Domains::firstOrCreate([
|
Domains::firstOrCreate([
|
||||||
'tenant_id' => $tenant->id,
|
'tenant_id' => $tenant->id,
|
||||||
'domain' => $domain,
|
'domain' => $domain,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteTenant(Tenant $tenant): void
|
public function deleteTenant(Tenant $tenant): void
|
||||||
{
|
{
|
||||||
Tenants::find($tenant->id)->delete();
|
DB::transacton(function () use ($tenant) {
|
||||||
Domains::where('tenant_id', $tenant->id)->delete();
|
Tenants::find($tenant->id)->delete();
|
||||||
|
Domains::where('tenant_id', $tenant->id)->delete();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -111,13 +111,16 @@ class Tenant implements ArrayAccess
|
||||||
return static::new()->withDomains((array) $domains)->withData($data)->save();
|
return static::new()->withDomains((array) $domains)->withData($data)->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function persisted($persisted = null)
|
/**
|
||||||
|
* DO NOT CALL THIS METHOD FROM USERLAND UNLESS YOU KNOW WHAT YOU ARE DOING.
|
||||||
|
* Set $persisted.
|
||||||
|
*
|
||||||
|
* @param bool $persisted
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function persisted(bool $persisted): self
|
||||||
{
|
{
|
||||||
if (gettype($persisted) === 'boolean') {
|
$this->persisted = $persisted;
|
||||||
$this->persisted = $persisted;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue