Do not speak Portuguese? Translate this site with Google or Bing Translator
Usando Joins em Consultas do Laravel Eloquent

Posted on: October 05, 2021 11:54 AM

Posted by: Renato

Categories: Laravel eloquent sql

Views: 2923

Usando Joins em Consultas do Laravel Eloquent

Os aplicativos Laravel que dependem fortemente da interação do banco de dados usando o Laravel Eloquent freqüentemente criam problemas de desempenho.

Para melhorar o desempenho de sua aplicação, você deve refatorar suas consultas e ficar de olho nas consultas que consomem memória usando o ORM como o Laravel Eloquent.

Neste post, vou mostrar um exemplo muito simples para refatorar uma consulta e melhorar o tempo de resposta do banco de dados.

Problema

Considere o código de exemplo abaixo, que usa a tabela Produto e Categoria para retornar o nome da categoria.

$product = Product::where('id', $productId)->first();

$productCategory = Category::where('id', $product->category_id)->pluck('name')->first();

O exemplo de código acima é simples de entender, mas usa duas chamadas separadas para o banco de dados. A primeira consulta deve retornar antes que a segunda possa ser acionada.

Solução

Vamos melhorar este exemplo de código combinando as duas solicitações em uma única consulta.

$productCategory = Product::where('id', $productId)
    ->leftJoin('category', 'product.category', '=', 'category.id')
    ->select('product.id','category.name')->first();

Agora, o que acabamos de fazer acima?

  • Em primeiro lugar, direcionamos o produto com base na productIdmesma consulta que a primeira.
  • A seguir, juntamos os resultados com a tabela de categorias usando a categorycategoria do produto. A primeira consulta pegou o modelo de produto que nos fornece o acesso ao atributo da categoria.
  • Selecionamos a id do produto e o nome da categoria.
  • Por fim, usamos o first()método, que garante que, assim que encontrar uma única categoria que atenda ao requisito, ele retornará o nome da categoria instantaneamente.

É isso. Você sabe que tem um melhor entendimento de como funciona a junção à esquerda e pode combinar a consulta para fazer uma única solicitação ao banco de dados. Parece bastante simples, mas usando o mesmo método, você pode otimizar as consultas complexas que lidam com várias tabelas.

Se você tiver algum comentário ou sugestão, ou encontrar algum erro, por favor me avise enviando um comentário abaixo.


1

Share
About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (12) Variados (108) PHP (102) Laravel (110) Black Hat (3) front-end (24) linux (82) postgresql (34) Docker (12) rest (4) soap (1) webservice (5) October (1) CMS (2) node (6) backend (10) ubuntu (38) devops (21) nodejs (4) npm (1) nvm (0) git (3) firefox (1) react (6) reactnative (5) collections (1) javascript (4) reactjs (7) yarn (0) adb (1) solid (0) blade (2) models (1) controllers (0) log (0) html (2) hardware (2) aws (14) Transcribe (2) transcription (1) google (3) ibm (1) nuance (1) PHP Swoole (4) mysql (22) macox (2) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (1) imagick (2) ec2 (1) sw (1) websocket (1) markdown (1) ckeditor (1) tecnologia (13) faceapp (1) eloquent (11) query (2) sql (35) ddd (3) nginx (6) apache (4) certbot (1) lets-encrypt (2) debian (9) liquid (1) magento (1) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (1) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (2) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (1) binaural (1) mysqli (3) database (32) windows (2) vala (1) json (2) oracle (1) mariadb (2) dev (12) webdev (23) s3 (4) storage (1) kitematic (1) gnome (2) web (1) intel (1) piada (1) cron (2) dba (12) lumen (1) ffmpeg (1) android (2) aplicativo (1) fedora (2) shell (3) bash (2) script (2) lider (1) htm (1) csv (1) dropbox (1) db (2) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (0) biologia (1) programming (20) performance (1) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (1) microg (1) iode (1) ssh (1) zsh (1) terminal (1) dracula (1) spaceship (1) mac (1) idiomas (1) laptop (1) developer (24) api (1) data (1) matematica (1) seguranca (2) 100DaysOfCode (5) hotfix (1) documentation (1) laravel (1) RabbitMQ (1) Elasticsearch (1) redis (1) Raspberry (3) Padrao de design (3) JQuery (0) angularjs (2) Dicas (7) kubenetes (1) vscode (1) backup (1) angular (1) servers (2) pipelines (1) AppSec (1) DevSecOps (2) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (1) jwt (1) security (1) translate (1) kube (1) iot (1) politica (1) bolsonaro (1) flow (1) podcast (1) Brasil (1)

New Articles



Get Latest Updates by Email