hasMany(SshKey::class); } public function sourceControls(): HasMany { return $this->hasMany(SourceControl::class); } public function serverProviders(): HasMany { return $this->hasMany(ServerProvider::class); } public function scripts(): HasMany { return $this->hasMany(Script::class, 'user_id'); } public function sourceControl(string $provider): HasOne { return $this->hasOne(SourceControl::class)->where('provider', $provider); } public function storageProviders(): HasMany { return $this->hasMany(StorageProvider::class); } public function storageProvider(string $provider): HasOne { return $this->hasOne(StorageProvider::class)->where('provider', $provider); } public function connectedStorageProviders(): HasMany { return $this->storageProviders()->where('connected', true); } public function connectedSourceControls(): array { $connectedSourceControls = []; $sourceControls = $this->sourceControls() ->where('connected', 1) ->get(['provider']); foreach ($sourceControls as $sourceControl) { $connectedSourceControls[] = $sourceControl->provider; } return $connectedSourceControls; } }