Executando verificação de segurança...
2

Recomendaria você criar uma classe para salvar o conteúdo e deixar o controller realmente só controlando, mas para simplificar irei fazer conforme seu exemplo.

Sugestões de melhoria:

  1. Controle no DB: Caso ocorra algum problema durante a manipulação das imagens ou salvamento você pode precisar fazer o banco voltar ao estado inicial, uma transaction fará você manter a coesão do bancomutilizando o rollback para desfazer tudo. Utilize isso sempre que um registro pode afetar outro e a ação depende do ciclo completo. (Nesse seu caso não precisaria necessáriamente, mas para controlar melhor a mensageria eu preferi por)

  2. Preenchimento dos dados: Seu $request->validated() já contem um array com os dados, abuse dele. Note que eu utilizei o método $model->fill() para isso e o dado que não contem ali eu passo manualmente para realmente saber que sai do padrão da request, que é acionada por outra parte do fonte (método privado para salvar a imagem).

  3. Trate os erros: caso de erro seu front deve exibir uma mensagem amigável também. Não esqueça de usar o old() no blade para repopular os inputs já digitados para diminuir a frustração do usuário.

Segue fonte refatorado:

    public function store(CreateAssociadoRequest $request)
    {

        try{
            DB::begginTransaction();
            
            $perfilAssociado = new PerfilAssociado();
            $perfilAssociado->fill($request->validated());
            $perfilAssociado->setAttribute('logo', $this->uploadImage($request, 'logo'));
            $perfilAssociado->save();

            DB::commit();
        }catch(Exception $e){
            DB::rollback();
            return redirect()->back()->with('fail', 'Falha ao cadastrar o perfil!');
        }

        return redirect()->back()->with('success', 'Perfil cadastrado com sucesso!');
    }

Lembrando que é só minha opnião e uma sugestão. Espero que essas dicas deixei seu fonte com uma leitura mais fluída ou seja útil de alguma forma. Qualquer dúvida estou a disposição

1

Obrigado, testei lá e ficou bom, e entendi para que serve, então realmente é bom ir melhorando e refatorando a os poucos.

só percebi que DB::begginTransaction(); estava escrito errado, mais já ajustei meu codigo lá e está 100%

valeu mesmo.