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

Curiosidade sobre o Doctrine

Curso de Doctrine ORM, 07 Repositorio e QueryBuilder, 02 Criando um repositorio, minuto 5:52

O professor adiciona a informacao no Entity do Aluno: @Entity(repositoryClass="Alura\Doctrine\Repository\AlunoRepository").

Eu entendi e tals, mas fui ler a documentacao do Doctrine e achei bem fraca. Queria entender melhor: Como o metodo EntityManagerInterface->getRepository(Aluno::class) trabalha? Se eu nao informar no Entity, ele retorna uma coisa, mas se eu informar no Entity, ele sabe qual classe buscar... A documentacao do proprio PHP e do PDO sao bem legais, informam input, output, qual tipo é recebido na funcao, e qual tipo eh retornado... a do Doctrine é meio "meh"...

É so curiosidade mesmo!

3 respostas
solução!

Oi Xadai, beleza?

Não entendi 100% qual é a sua dúvida mas vou tentar respondê-la.

Todas entidades mapeadas pelo Doctrine possui um repositório padrão que pode ser obtido através do método getRepository(NomeDaClasse::class) do entity manager. Nesse repositório padrão você tem acesso a todos aqueles métodos explicados no curso: find, findBy, findOneBy, etc..

Esse repositório padrão pode ser modificado se você informar na entidade o caminho do seu novo repositório, que no seu exemplo foi feito através dessa linha @Entity(repositoryClass="Alura\Doctrine\Repository\AlunoRepository"). A partir de agora quando você usar o método "getRepository", do seu entity manager, será instanciado uma nova classe desse repositório que você criou, ao invés daquele repositório padrão.

Resumindo: o método "getRepository" verifica se há um repositório configurado por você, caso haja esse repositório ele o instancia e caso não haja ele instancia um repositório padrão criado por ele próprio.

Valeu Diego! Você entendeu sim a dúvida! Por exemplo: A documentação do PHP e do PDO são muito claras, quais são os parâmetros e seus tipos que funções e métodos recebem e retornam. Mas eu não encontrei nenhuma documentação, por exemplo, dizendo assim:

Exemplo simples: https://www.php.net/manual/en/function.implode.php

Description: implode ( string $separator , array $array ) : string

Essa linha diz, claramente, quais argumentos a função implode recebe, quais os tipos desses argumentos, e qual o retorno da função. Fora que o resto da página explica como a função se comporta e etc.

Eu não encontrei algo assim para o método getRepository(), por exemplo. Era isso que eu estava procurando.

Qualquer coisa estou a disposição. Não esquece de marcar a solução para o tópico ficar como respondido (: