1
resposta

Dúvida sobre o setId

Olá professor, tudo bem? Eu não entendi muito bem o motivo de "setar" o id. O id esta sendo alterado no banco de dados? O que me parece é que o Doctrine vai checar o Id no banco e fazer o merge daquele Id sem alterá-lo, seria isso? Se for isso, ele só não altera por termos definido que o Id é um id pelos comentários do Doctrine?

1 resposta

Olá, Luis! Tudo bem?

Gostaria de pedir desculpas pela demora em responder o seu tópico!

No padrão MVC, o Model é responsável por gerenciar os dados da aplicação. Quando utilizamos um ORM (Object-Relational Mapping), como o Doctrine, para fazer a persistência desses dados no banco, é comum utilizarmos uma classe que representa uma entidade do banco de dados, e essa classe geralmente possui um atributo que representa a chave primária da tabela, que é o caso do atributo "id".

O método setId serve justamente para "setar" esse atributo, ou seja, definir o valor da chave primária da entidade. Quando utilizamos o Doctrine, o setId não altera diretamente o valor do id no banco de dados, mas sim define o valor da chave primária da entidade, que será utilizada posteriormente pelo ORM para fazer a persistência dos dados no banco.

Quanto à sua pergunta sobre o Doctrine checar o Id no banco e fazer o merge daquele Id sem alterá-lo, você está correto. O Doctrine utiliza o Id da entidade para fazer a busca no banco de dados e, caso encontre um registro com esse Id, ele faz o merge dos dados da entidade com os dados do registro no banco, sem alterar o valor da chave primária.

Espero ter ajudado e bons estudos :)