vaults() ->where('name', 'like', $attributes['name']) ->exists(); if ($vaultExists) { /** @var list $vaults */ $vaults = array_column( $user->vaults() ->select('name') ->where('name', 'like', $attributes['name'] . '-%') ->get() ->toArray(), 'name', ); natcasesort($vaults); $attributes['name'] .= count($vaults) && preg_match('/-(\d+)$/', end($vaults), $matches) === 1 ? '-' . ((int) $matches[1] + 1) : '-1'; } // Save vault to database $vault = $user->vaults()->create($attributes); // Save vault to disk $vaultPath = new GetPathFromVault()->handle($vault); Storage::disk('local')->makeDirectory($vaultPath); return $vault; } }