Artigos Rem soft Sistemas

Dominando os recursos de relacionamentos eloquent do Laravel

Introdução

Nos bastidores de qualquer aplicativo Laravel poderoso está o Eloquent ORM, uma ferramenta que não só simplifica drasticamente a interação com o banco de dados, mas também abre as portas para uma arquitetura de aplicativos mais organizada e flexível. Entre os vários tesouros que o Eloquent oferece, destaca-se o seu sistema de relacionamentos. Este sistema permite que os modelos de dados sejam entrelaçados de forma tão harmoniosa que, por vezes, parece quase mágica. Imagine uma teia de conexões onde cada entidade do seu aplicativo, seja um usuário, um post, ou qualquer outra coisa, pode se relacionar com outras de maneira elegante e eficiente.

Nesta jornada, mergulharemos profundamente nos meandros desses relacionamentos, desvendando seus segredos e desvendando suas nuances. Descobriremos como esse recurso não apenas simplifica o desenvolvimento de aplicativos, mas também enriquece a nossa capacidade de projetar sistemas complexos de forma intuitiva e poderosa. Então, prepare-se para explorar as maravilhas do sistema de relacionamentos no Laravel, e aprender como utilizá-lo ao máximo para construir aplicativos extraordinários.

 

Tipos de relacionamentos

 

One-to-One (Um para Um): Neste tipo de relacionamento, um registro em uma tabela está associado a exatamente um registro em outra tabela, e vice-versa. Isso significa que cada registro em uma tabela está vinculado a apenas um registro correspondente na outra tabela e vice-versa. Um exemplo comum disso seria a relação entre um usuário e seu perfil. Cada usuário tem apenas um perfil e cada perfil pertence a apenas um usuário.

One-to-Many (Um para Muitos): Neste tipo de relacionamento, um registro em uma tabela está associado a um ou mais registros em outra tabela, mas cada registro na segunda tabela está associado a exatamente um registro na primeira tabela. Por exemplo, um usuário pode ter vários posts, mas cada post pertence a apenas um usuário.

Many-to-Many (Muitos para Muitos): Neste tipo de relacionamento, múltiplos registros em uma tabela podem estar associados a múltiplos registros em outra tabela. Isso é alcançado por meio de uma tabela intermediária que armazena os relacionamentos. Por exemplo, em um sistema de blog, um post pode ter várias categorias e uma categoria pode estar associada a vários posts.

 

Banco de dados

 

One-to-One (Um para Um)

One-to-Many (Um para Muitos)

Many-to-Many (Muitos para Muitos)

 

Definição dos relacionamentos

 

One-to-One (Um para Um)

One-to-Many (Um para Muitos)

Many-to-Many (Muitos para Muitos)

 

 

Carregamento do modelo com dados do relacionamento

 

 

Problema do N+1

O problema do N+1 é uma situação que ocorre em sistemas ORM (Object-Relational Mapping), como o Eloquent no Laravel, quando consultas adicionais ao banco de dados são feitas de forma redundante devido a uma má utilização dos relacionamentos de dados.

O nome “N+1” vem da seguinte situação:

  • “N” representa o número de registros no modelo principal que estão sendo consultados.
  • “+1” representa uma consulta adicional para cada registro principal para recuperar dados relacionados.

Em outras palavras, para cada registro no modelo principal, uma consulta adicional é feita para recuperar os dados relacionados, resultando em “N+1” consultas ao banco de dados.

Por exemplo, considere um cenário em que temos uma lista de posts e precisamos recuperar os autores de cada post. Se não utilizarmos o carregamento eager e simplesmente acessarmos o relacionamento author para cada post em um loop, isso resultará no problema do N+1. Para 10 posts, haverá 1 consulta para recuperar os posts e mais 10 consultas (1 para cada post) para recuperar os autores, totalizando 11 consultas ao banco de dados.

O problema do N+1 pode ter um impacto significativo no desempenho da aplicação, especialmente quando lidamos com grandes conjuntos de dados ou quando as consultas adicionais são complexas.

Para evitar o problema do N+1, é recomendável utilizar o carregamento eager sempre que possível. Com o carregamento eager, os dados relacionados são carregados junto com o modelo principal em uma única consulta, eliminando assim a necessidade de consultas adicionais para cada registro. Isso ajuda a reduzir drasticamente o número total de consultas ao banco de dados e melhora o desempenho da aplicação.

  1. N+1 na prática

 

Utilização dos dados na view

 

Acesso sem eager loading

 

 

Queries realizadas no banco

 

Acesso com eager loading

Queries realizadas no banco

 

Conclusão

Os recursos de relacionamentos Eloquent no Laravel representam um dos pilares fundamentais do desenvolvimento de aplicativos web robustos e escaláveis. Ao permitir que os modelos de dados sejam interconectados de maneira elegante e eficiente, esses recursos capacitam os desenvolvedores a criar sistemas complexos de forma intuitiva e poderosa.

Ao longo deste post, exploramos os diferentes tipos de relacionamentos – One-to-One, One-to-Many e Many-to-Many – e aprendemos como definir e trabalhar com eles em nossos modelos.

É crucial lembrar que a escolha do tipo de relacionamento e da técnica de carregamento deve ser feita com cuidado, levando em consideração fatores como desempenho, eficiência e legibilidade do código. Ao utilizar adequadamente os recursos de relacionamentos Eloquent, podemos otimizar o desempenho da nossa aplicação, evitar problemas como o problema do N+1 e criar uma base sólida para futuras expansões e manutenções.

Em última análise, dominar os recursos de relacionamentos Eloquent é essencial. Continuar explorando e experimentando com esses recursos nos permite elevar nossas habilidades de desenvolvimento e construir aplicativos extraordinários que atendam às necessidades de nossos usuários de forma excepcional.

 

Escrito por:

Está gostando do conteúdo? Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Artigos Recentes

Qual a importância da Cloud para as IAS?

Qual a importância da Cloud para as IAS? O que é Cloud ? Muitas pessoas que não sabem muito sobre tecnologia, não fazem nem ideia do que é cloud, porém se você tem um celular nem precisa ser dos mais novos, você já utiliza a cloud ou computaçao em nuvem.

Leia Mais »

Como escolher entre plataformas de desenvolvimento low-code e high-code

Escolher entre uma plataforma low-code e high-code para o desenvolvimento de software é uma decisão estratégica que impacta diretamente a eficiência, custos e qualidade do projeto. Com a crescente demanda por soluções digitais rápidas e eficientes, entender as diferenças entre essas abordagens é essencial para optar pela melhor alternativa. Neste

Leia Mais »

Design Pattern Bridge

O Design Pattern Bridge é um padrão de projeto estrutural que ajuda a dividir a abstração (o que algo faz) da implementação (como algo é feito). Essa separação permite que ambas possam evoluir de forma independente, ou seja, você pode mudar ou expandir tanto a parte abstrata quanto a parte

Leia Mais »

Armazenamento ODS com 3D nanoscale

O que é o ODS ? ODS ou armazenamento de dados ópticos, basicamente são os CDs, DVDs e Blu-ray que usávamos tanto no inicio dos anos 2000 para assistirmos filmes, jogar vídeo games, ouvir musicas e etc. mas que vem perdendo o espaço para as novas tecnologias de armazenamento como

Leia Mais »

Sobre o Autor

Mais sobre tecnologia

Gostou do Artigo?

Recebemos sua Assinatura com Sucesso!

Obrigado por assinar nossa newsletter!

Enviamos um e-mail para você confirmar sua assinatura, assim que confirmar passará a receber novidades em tecnologia da Rem Soft Sistemas.

Lembre-se sempre se caso não receber nosso e-mail na caixa de entrada,
Observe sua caixa de spam em seu e-mail.