'array', 'is_active' => 'boolean', ]; public function plesk() { return $this->hasOne(ServicePlanPlesk::class); } public function dnsServer() { return $this->belongsTo(DnsServer::class, 'dns_manager_server_id'); } public function servers() { return $this->belongsToMany(DnsServer::class, 'service_plan_servers', 'service_plan_id', 'dns_manager_server_id') ->withPivot('priority') ->orderByPivot('priority'); } public function syncServers(array $serverIds): void { $ids = array_values(array_unique(array_map('intval', $serverIds))); $this->servers()->sync(collect($ids)->mapWithKeys(fn (int $id, int $index) => [$id => ['priority' => $index]])->all()); $this->update(['dns_manager_server_id' => $ids[0] ?? null]); } public function summary(): array { return [ 'title' => $this->title, 'vcpu' => $this->vcpu, 'ram' => $this->ram, 'disk' => $this->disk, 'bandwidth' => $this->bandwidth, 'databases' => $this->databases, 'mailboxes' => $this->mailboxes, 'ftp_accounts' => $this->ftp_accounts, 'subdomains' => $this->subdomains, 'domain_aliases' => $this->domain_aliases, 'features' => $this->features ?? [], ]; } }