(16) 981791110 contato@policast.studio

O que são Listas em Doctrine?

Listas são uma coleção de objetos que podem ser tratados como arrays na programação. No contexto do Doctrine, as Listas são utilizadas para representar coleções de entidades do banco de dados.

Como criar uma Lista em Symfony com Doctrine?

Para criar uma Lista em Symfony com Doctrine, basta utilizar o método createQueryBuilder() em um repositório de entidades. Em seguida, é possível adicionar condições e ordenações através dos métodos where() e orderBy():


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(Entidade::class);

$lista = $repo->createQueryBuilder('e')
->where('e.valor > :valor')
->setParameter('valor', 10)
->orderBy('e.valor', 'DESC')
->getQuery()
->getResult();

No exemplo acima, é criada uma Lista de entidades do tipo Entidade que possuem um valor maior do que 10, ordenadas pelo valor em ordem decrescente.

Como iterar sobre uma Lista em Symfony com Doctrine?

Para iterar sobre uma Lista em Symfony com Doctrine, basta utilizar um laço de repetição como foreach:


foreach($lista as $entidade){
// faz algo com a entidade
}

No exemplo acima, é feito algo com cada entidade da Lista, usando a variável $entidade.

Como adicionar uma entidade em uma Lista em Symfony com Doctrine?

Para adicionar uma entidade em uma Lista em Symfony com Doctrine, basta utilizar o método add(), presente em todos os objetos do tipo ArrayCollection:


$lista->add($novaEntidade);

No exemplo acima, é adicionada a nova entidade $novaEntidade à Lista $lista.

Como remover uma entidade de uma Lista em Symfony com Doctrine?

Para remover uma entidade de uma Lista em Symfony com Doctrine, basta utilizar o método removeElement(), presente em todos os objetos do tipo ArrayCollection:


$lista->removeElement($entidade);

No exemplo acima, é removida a entidade $entidade da Lista $lista.

Como buscar uma entidade em uma Lista em Symfony com Doctrine?

Para buscar uma entidade em uma Lista em Symfony com Doctrine, basta utilizar o método contains(), presente em todos os objetos do tipo ArrayCollection:


if($lista->contains($entidade)){
// faz algo com a entidade encontrada
}

No exemplo acima, é verificado se a entidade $entidade está presente na Lista $lista. Caso esteja, é feito algo com ela.

Como ordenar uma Lista em Symfony com Doctrine?

Para ordenar uma Lista em Symfony com Doctrine, basta utilizar o método orderBy() em um repositório de entidades:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(Entidade::class);

$listaOrdenada = $repo->createQueryBuilder('e')
->orderBy('e.valor', 'ASC')
->getQuery()
->getResult();

No exemplo acima, é criada uma Lista ordenada de entidades do tipo Entidade, ordenadas pelo valor em ordem crescente.

Como filtrar uma Lista em Symfony com Doctrine?

Para filtrar uma Lista em Symfony com Doctrine, basta utilizar o método where() em um repositório de entidades:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(Entidade::class);

$listaFiltrada = $repo->createQueryBuilder('e')
->where('e.valor > :valor')
->setParameter('valor', 10)
->getQuery()
->getResult();

No exemplo acima, é criada uma Lista filtrada de entidades do tipo Entidade que possuem um valor maior do que 10.

Como contar os elementos de uma Lista em Symfony com Doctrine?

Para contar os elementos de uma Lista em Symfony com Doctrine, basta utilizar o método count() em objetos do tipo ArrayCollection:


$quantidadeElementos = $lista->count();

No exemplo acima, é contada a quantidade de elementos presentes na Lista $lista.

Como paginar uma Lista em Symfony com Doctrine?

Para paginar uma Lista em Symfony com Doctrine, basta utilizar os métodos setMaxResults() e setFirstResult() em um repositório de entidades:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(Entidade::class);

$primeiraPagina = $repo->createQueryBuilder('e')
->setMaxResults(10)
->setFirstResult(0)
->getQuery()
->getResult();

$segundaPagina = $repo->createQueryBuilder('e')
->setMaxResults(10)
->setFirstResult(10)
->getQuery()
->getResult();

No exemplo acima, são criadas duas Listas paginadas de entidades do tipo Entidade, cada uma com no máximo 10 elementos. A primeira Lista começa a partir do primeiro elemento (índice 0), enquanto a segunda começa a partir do décimo (índice 10).

Como realizar queries personalizadas em uma Lista em Symfony com Doctrine?

Para realizar queries personalizadas em uma Lista em Symfony com Doctrine, basta utilizar o método createQuery() em um repositório de entidades. Em seguida, é possível usar a linguagem DQL para definir a query:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(Entidade::class);

$queryPersonalizada = $repo->createQuery("
SELECT e
FROM AppEntityEntidade e
WHERE e.valor > :valor
ORDER BY e.valor DESC
");

$queryPersonalizada->setParameter('valor', 10);

$lista = $queryPersonalizada->getResult();

No exemplo acima, é criada uma Query personalizada usando a linguagem DQL, que retorna uma Lista de entidades do tipo Entidade que possuem um valor maior do que 10, ordenadas pelo valor em ordem decrescente.

Como atualizar uma entidade em uma Lista em Symfony com Doctrine?

Para atualizar uma entidade em uma Lista em Symfony com Doctrine, basta obter a entidade a ser atualizada e modificar o valor desejado. Ao salvar a entidade modificada no banco de dados, a Lista será atualizada automaticamente:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(Entidade::class);

$entidade = $repo->findOneBy(['id' => 1]);
$entidade->setValor(20);

$entityManager->flush();

No exemplo acima, é obtida a entidade com id = 1, e o valor é modificado para 20. Ao salvar a entidade modificada no banco de dados, a Lista será atualizada automaticamente.

Como excluir uma entidade em uma Lista em Symfony com Doctrine?

Para excluir uma entidade em uma Lista em Symfony com Doctrine, basta obter a entidade a ser excluída e usar o método remove() do objeto de gerenciamento de entidades:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(Entidade::class);

$entidade = $repo->findOneBy(['id' => 1]);

$entityManager->remove($entidade);
$entityManager->flush();

No exemplo acima, é obtida a entidade com id = 1, e ela é excluída a partir do objeto de gerenciamento de entidades. Ao salvar as modificações no banco de dados, a Lista será atualizada automaticamente.

Como utilizar associações em uma Lista em Symfony com Doctrine?

Para utilizar associações em uma Lista em Symfony com Doctrine, basta obter a entidade que possui a associação e acessá-la como uma propriedade. Exemplo:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(EntidadePai::class);

$entidadePai = $repo->findOneBy(['id' => 1]);

$listaDeFilhos = $entidadePai->getFilhos();

No exemplo acima, é obtida a entidade pai com id = 1, e é acessada a sua associação com a propriedade filhos. É retornada uma Lista de entidades do tipo EntidadeFilho associadas à entidade pai.

Como obter uma Lista de associações em Symfony com Doctrine?

Para obter uma Lista de associações em Symfony com Doctrine, basta utilizar o método getManyToMany() em uma entidade, passando o nome da associação como argumento:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(EntidadePrincipal::class);

$entidadePrincipal = $repo->findOneBy(['id' => 1]);

$listaDeEntidadesAssociadas = $entidadePrincipal->getEntidadesAssociadas();

No exemplo acima, é obtida a entidade principal com id = 1, e é acessada a sua Lista de associações com a propriedade entidadesAssociadas. É retornada uma Lista de entidades do tipo EntidadeAssociada associadas à entidade principal.

Como filtrar uma Lista de associações em Symfony com Doctrine?

Para filtrar uma Lista de associações em Symfony com Doctrine, basta utilizar o método where() do objeto QueryBuilder, passando o nome da associação como primeiro argumento:


$entityManager = $this->getDoctrine()->getManager();
$repo = $entityManager->getRepository(EntidadePrincipal::class);

$entidadePrincipal = $repo->findOneBy(['id' => 1]);

$listaDeEntidadesAssociadas = $entidadePrincipal->getEntidadesAssociadas()
->matching(
$entidadePrincipal->getEntidadesAssociadas()
->expr()
->where('e.valor > :valor')
->setParameter('valor', 10)
);

No exemplo acima, é obtida a entidade principal com id = 1, e é filtrada a Lista de associações com a condição de que as entidades associadas possuam um valor maior do que 10. É retornada uma nova Lista com as associações que satisfazem a condição.