[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
JEFFERSON LUIZ ROSSINI
Criador JEFFERSON LUIZ ROSSINI 23/07/2023

Olá Carlos, primeiramente parabens pelo curso. Incrivel o tanto de conhecimento que pude absorver neste curso.

Fazendo os testes de deletar um usuário que não existe, o laravel retorna sempre status 500.
Pesquisei o motivo, pois o meu esta exatamente como o seu, a diferença é que estou em uma versão do laravel mais nova.

Meu methodo de destroy eu uso o findOrFail(), igual o seu.+

$user = $this->repository->where('uuid', $identify)->findOrFail();

Achei inumeras formas de resolver, porem não sei qual seria a mais prudente. 
Gostaria de uma avaliação sua.

Manager Carlos Ferreira 23/07/2023

Olá, Jefferson! Como vai?

Obrigado pelo comentário. TMJ!

--

Como está implementado o seu repositório? Compartilha comigo por favor.

Carlos Ferreira
Criador JEFFERSON LUIZ ROSSINI 23/07/2023

Na verdade é só o nome da variavel ali, pois não implementei ele ainda.

    protected $repository;

    public function __construct(User $model)
    {
        $this->repository = $model;

        $this->middleware('can:VerTodos');
    }
 
    public function show(string $identify)
    {
        $user = $this->repository->where('uuid', $identify)->firstOrFail();

        return new UserResource($user);
    }

    public function destroy(string $identify)
    {
        $user = $this->repository->where('uuid', $identify)->findOrFail();

        $user->delete();

        return response()->json([
            'deleted' => 'success'
        ]);
    }
JEFFERSON LUIZ ROSSINI
Manager Carlos Ferreira 23/07/2023

No repositório você não implementou o método findOrFail, por isso o erro. Precisa criar este método no seu repositório.

Carlos Ferreira
Criador JEFFERSON LUIZ ROSSINI 23/07/2023

Não entendi.

Esse método é da model e não do repository, o meu repository poderia se chamar model ou qualquer outra coisa.

O método findOrFail() funciona normalmente e eu não precisei implementar nada.

Somente nos testes que ele retorna 500 ao invés de 204.

JEFFERSON LUIZ ROSSINI
Manager Carlos Ferreira 23/07/2023

Você usou a instância do repositório, e não do Model.

Para funcionar os métodos nativos do Model (Eloquent) seu repositório precisaria extender do Model.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!