Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Laravel Eloquent vs construtor de consultas - Por que usar o eloquent para diminuir o desempenho


Eloquent é a implementação do padrão Active Record do Laravel e vem com todos os seus pontos fortes e fracos.

O Active Record é uma boa solução para processar uma única entidade de maneira CRUD - ou seja, criar uma nova entidade com propriedades preenchidas e salvá-la em um banco de dados, carregar um registro de um banco de dados ou excluí-lo.

Você se beneficiará muito dos recursos do Eloquent, como verificação suja (para enviar SQL UPDATE apenas para os campos que foram alterados), eventos de modelo (por exemplo, enviar alertas administrativos ou atualizar contadores de estatísticas quando alguém criou uma nova conta), traits ( timestamps, soft deletes, suas características personalizadas) carregamento rápido/lento etc. Você também pode aplicar o padrão orientado a domínio e implementar algumas partes da lógica de negócios em suas entidades Active Record, por exemplo, validação, gerenciamento de relações, cálculos etc.

Mas, como você já sabe, o Active Record vem com algum preço de desempenho.

Quando você processa um único registro ou alguns registros, não há com o que se preocupar. Mas para casos em que você lê muitos registros (por exemplo, para datagrids, para relatórios, para processamento em lote etc.) o Laravel simples DB métodos é uma abordagem melhor.

Para nossos aplicativos baseados em Laravel, estamos usando ambas as abordagens conforme julgarmos apropriado. Usamos os formulários Eloquent for UI do Laravel para processar um único registro e usar DB métodos (apoiados por visualizações SQL com ajustes de desempenho específicos do mecanismo de banco de dados adicionais) para recuperar dados para tabelas de interface do usuário, tarefas de exportação etc. Também funciona bem com APIs RESTful - Eloquent para GET, PUT, POST, DELETE com uma chave e DB para GET sem chave, mas com filtros e classificação e paginação.