Usando junções em consultas eloqüentes do Laravel para melhor desempenho

Usando junções em consultas eloqüentes do Laravel para melhor desempenho
Na maioria das vezes vejo pessoas cometendo muitos erros ao interagir com um banco de dados, e muitos iniciantes não prestam atenção a quantas chamadas. E isso é bom no começo. Especialmente se o seu aplicativo for pequeno e você ainda está aprendendo.

Além disso, também acho que nos primeiros dias do aplicativo Laravel, você deve se concentrar em criar os recursos e codificação. Depois de começar a ter problemas e você realmente começa a perceber que seu aplicativo é lento, só então você deve analisar o que pode fazer para otimizar suas consultas MySQL.

99% do tempo você usará métodos eloquentes para fazer chamadas de banco de dados e, às vezes, o caminho mais fácil que você deseja seguir, aparece para causar problemas na linha.

Orm como eloqüente é simplesmente fantástico e o apoiará até o fim.

Agora imagine que você está construindo seu pedido há algum tempo e deseja refatorar algumas de suas chamadas para torná -las um pouco mais rápidas. Vamos passar por um exemplo de como você pode participar de consultas para obter o mesmo resultado, em menos tempo.

Problema

Considere um exemplo de código abaixo, que usa o Do utilizador e Organização tabela para devolver o nome de usuário.

$ user = user :: find ($ user_id);
$ organização = organização :: where ('id', $ user-> organização_id)-> Pluck ('nome')-> primeiro ();

O exemplo de código acima é simples o suficiente para entender, mas usa duas chamadas separadas para o banco de dados. A segunda chamada é obviamente confiável no primeiro, portanto, precisamos esperar o primeiro terminar antes de chegarmos ao próximo.

Solução

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

$ user_with_organization = user :: where ('id', $ user_id)
-> LeftJoin ('Organizações', 'Usuários.organização_id ',' = ',' Organizações.eu ia')
-> Selecione ('Usuários.id ',' organizações.nome ')-> primeiro ();

Agora, o que acabamos de fazer acima?
1. Em primeiro lugar, alvejamos o usuário com base no $ user_id, exatamente a mesma consulta que a primeira.
2. Em seguida, ingressamos nos resultados com a tabela de organizações usando a tabela de usuários, preencha a consulta de junção esquerda
3. A primeira consulta pegou o modelo de usuário que nos fornece o acesso ao organização_id atributo.
4. Selecionamos o ID do usuário e o nome da organização.
5. Por fim, usamos o método First (), que garante que, uma vez que ele encontre uma única organização que atenda ao requisito, ele retornará o nome da organização instantaneamente.

Como a junção da esquerda funciona

Quando você tem duas consultas e deseja sair da segunda, isso significa que seu resultado final será o resultado de sua primeira consulta, onde alguns dos resultados podem receber alguma correspondência com a segunda consulta e ter alguns dados extras com eles.

É isso. Agora você tem uma melhor compreensão de como a junta à esquerda funciona. Use -o para combinar consultas relacionadas para fazer uma única solicitação ao banco de dados. Parece bastante simples, mas usar o mesmo método pode ajudá -lo a otimizar as consultas mais complexas que lidam com várias tabelas.

Se você tiver algum comentário ou sugestão, sinta -se à vontade para entrar em contato comigo.