Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Método 'merge'

Boa noite

Estou utilizando o phpStorm, e ao utilizar o método 'merge', a IDE informou que este método está 'deprecated'. Teria outro método que é semelhante a esse? Obrigado pela ajuda.

Parte do código que foi utilizado este método:

public function processarRequisicao(): void
    {
        $descricao = filter_input(
            INPUT_POST,
            'descricao',
            FILTER_SANITIZE_STRING
        );

        $curso = new Curso();
        $curso->setDescricao($descricao);

        $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);

        if (!is_null($id) && $id !== false) {
            $curso->setId($id);
            $this->entityManager->merge($curso);
        } else {
            $this->entityManager->persist($curso);
        }

        $this->entityManager->flush();

        header("Location: /listar-cursos");
    }
3 respostas
solução!

Oi Leonardo, tudo bem?

Que estranho cara, não vi nada relacionado ao merge estar depreciado. Enquanto o Vinicius ou outro instrutor não resolve isso para você eu tenho uma alternativa menos elegante, porém resolve seu problema e você não fica com o projeto parado:

public function processarRequisicao(): void
    {
        $descricao = filter_input(
            INPUT_POST,
            'descricao',
            FILTER_SANITIZE_STRING
        );

        $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);

        if (!is_null($id) && $id !== false) {
            $curso = $this->entityManager->find(Curso::class, $id);
            $curso->setDescricao($descricao);
        } else {

            $curso = new Curso();
            $curso->setDescricao($descricao);
            $this->entityManager->persist($curso);

        }


        $this->entityManager->flush();

        header("Location: /listar-cursos");
    }

O que eu fiz? Caso tenha o id na requisição eu busco o curso no repositório manualmente e altero a sua descrição. E caso não tenha o id eu crio um novo curso.

Veja se funciona direitinho, bons estudos.

Bom dia

Funcionou sim, muito obrigado!

Diego tá voando!

Perfeita sugestão.

Na versão 3 do Doctrine realmente o método merge não vai mais estar disponível.

https://github.com/doctrine/orm/blob/master/UPGRADE.md#bc-break-removed-entitymanagermerge-and-entitymanagerdetach-methods

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software