1
resposta

Dúvidas

1) Como saber onde colocar o mappedBy e o inversedBy. Colocamos mappedBy em Aluno e inversedBy em Telefone, porém tem alguma regra?

2) Definimos o método de adicionarTelefones na classe de Aluno e também definimos o método de adicionarAluno na classe de Telefone, porém quando eu adicionar um Telefone na classe Aluno, ele já não vai adicionar a lista de telefones daquela instância de Aluno em específico? Para quê colocar o addAluno em Telefone?

3) Criamos a propriedade public readonly Aluno $aluno na classe Telefone e depois definimos um método setAluno assim:

public function setAluno(Aluno $aluno): self
    {
        $this->aluno = $aluno;
        return $this;
    }

Como é possível adicionar um aluno dessa forma se a propriedade é readonly? Não entendi.

1 resposta

Oi, Karolina! Tudo bem?

Desculpa a demora por um retorno.

Em relação a sua primeira dúvida, o mappedBy e o inversedBy são usados para estabelecer a relação entre as entidades em um relacionamento bidirecional no Doctrine. Usamos o mappedBy na entidade que não possui a chave estrangeira e o inversedBy deve ser colocado na entidade que possui a chave estrangeira, essa é a regra, por isso colocamos mappedBy em Aluno e inversedBy em Telefone.

Em relação a sua segunda pergunta, quando adicionamos um Telefone na classe Aluno ele não irá automaticamente adicionar a lista de telefones daquela instância de Aluno em específico. O método addAluno na classe Telefone serve para estabelecer a relação bidirecional, ou seja, quando adicionamos um Telefone em um Aluno, também é necessário adicionar esse Aluno na lista de alunos desse Telefone. Dessa forma, garantimos a consistência dos dados em ambos os lados da relação.

Já no exemplo enviado, a propriedade $aluno é definida como readonly, o que significa que ela só pode ser definida uma vez, geralmente no construtor da classe. No entanto, o método setAluno permite que consigamos definir o valor dessa propriedade mesmo após a sua inicialização. Isso pode ser útil em alguns casos, por exemplo, quando precisamos atualizar a referência para um objeto Aluno em um Telefone.

Espero ter ajudado. Caso tenha alguma dúvida, sinta-se à vontade para comunicar, estou à disposição.

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

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