Laravel Database

Laravel
Tempo de leitura: 4 minutos

O Laravel Database é o coração da interação de dados em qualquer aplicação Laravel. O framework fornece uma camada de abstração que facilita a comunicação com diversos bancos de dados (MySQL, PostgreSQL, SQLite, SQL Server), oferecendo métodos tanto para execução de SQL puro quanto para a construção de consultas fluentes (Query Builder).

Este artigo detalha a configuração de conexões, a execução de queries, a garantia de integridade com Transações e o monitoramento do desempenho.

1. ⚙️ Configuração de Conexão

As configurações principais são definidas no arquivo .env e são gerenciadas pelo arquivo config/database.php.

A. Configuração no .env

Você pode configurar a conexão primária usando variáveis de ambiente.

.ENV

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nome_do_banco
DB_USERNAME=nome_do_usuario
DB_PASSWORD=senha_do_usuario

B. Conexões Múltiplas e Read/Write (Leitura/Escrita)

Para cenários de alto desempenho, o Laravel suporta a distribuição de carga ao separar conexões de leitura (Read) e escrita (Write).

No arquivo config/database.php, dentro da configuração da conexão desejada (mysql no exemplo):

PHP

'mysql' => [
    'read' => [
        'host' => [
            '192.168.1.100', // Servidor de Réplica 1
            '192.168.1.101', // Servidor de Réplica 2
        ],
    ],
    'write' => [
        'host' => [
            '192.168.1.200', // Servidor Mestre/Primário
        ],
    ],
    // ... restante da configuração ...
],

Com essa configuração, todas as chamadas DB::select e DB::get() do Query Builder usarão as conexões read, e todas as chamadas DB::insert, DB::update e DB::delete usarão a conexão write.

2. 📝 Executando Consultas SQL

O Laravel oferece dois métodos principais para interagir com o banco de dados sem usar o Eloquent ORM.

A. SQL Puro com a Facade DB

Para executar comandos SQL diretamente, use a Facade DB, sempre utilizando bindings (o caractere ?) para evitar ataques de injeção SQL.

MétodoTipo de QueryExemplo
DB::selectSELECTDB::select('SELECT * FROM users WHERE active = ?', [1]);
DB::insertINSERTDB::insert('INSERT INTO users (name) values (?)', ['Dayle']);
DB::updateUPDATEDB::update('UPDATE users SET votes = 100 WHERE id = ?', [1]);
DB::deleteDELETEDB::delete('DELETE FROM users WHERE votes = ?', [0]);

B. Query Builder

O Query Builder oferece uma interface fluente, sendo mais seguro e mais fácil de ler que SQL puro.

PHP

use Illuminate\Support\Facades\DB;

// Seleção de dados
$users = DB::table('users')
            ->where('active', 1)
            ->orderBy('name')
            ->get();

// Inserção
DB::table('users')->insert([
    'email' => '[email protected]', 
    'votes' => 0
]);

// Atualização
DB::table('users')
    ->where('id', 1)
    ->update(['votes' => 1]);

3. 🔄 Transações de Banco de Dados

Transações são vitais para a integridade dos dados, garantindo que uma série de operações SQL sejam tratadas como uma única unidade. Se alguma query falhar, todas as alterações anteriores dentro do bloco de transação são revertidas (Rollback).

O método DB::transaction() é a maneira mais limpa e recomendada de gerenciar transações, pois ele lida automaticamente com commit e rollback.

PHP

use Illuminate\Support\Facades\DB;
use Throwable;

try {
    DB::transaction(function () use ($user, $amount) {
        // 1. Diminui o saldo do usuário
        DB::table('accounts')->where('user_id', $user->id)->decrement('balance', $amount);

        // 2. Registra o pagamento em outra tabela
        DB::table('transactions')->insert([
            'user_id' => $user->id, 
            'amount' => $amount
        ]);
        
        // Se ambos forem bem-sucedidos, o COMMIT é automático.
    }); 
    
    // Transação concluída com sucesso

} catch (Throwable $e) {
    // Se ocorrer uma exceção (erro), o ROLLBACK é automático.
    report($e);
}

4. 🔎 Inspecionando e Monitorando

Ferramentas de debugging são essenciais para otimizar queries lentas e monitorar o comportamento do banco de dados.

A. Log de Queries (Em Desenvolvimento)

Você pode logar todas as queries executadas na sua aplicação.

PHP

// No seu arquivo .env, para depuração local
DB_LOG=true 

As queries serão escritas no arquivo storage/logs/laravel.log.

B. Laravel Telescope

O Telescope é uma ferramenta oficial de debugging que fornece uma interface gráfica para visualizar todas as queries executadas por requisição, incluindo o tempo de execução e os bindings utilizados.

C. Clockwork

Uma alternativa popular que se integra ao painel de desenvolvedor do seu navegador (via extensão), fornecendo informações detalhadas sobre a execução das queries.

✅ Conclusão Laravel Database

Laravel Database: O sistema de banco de dados do Laravel é poderoso e flexível. Dominar a configuração de conexões Read/Write e a execução de queries via Query Builder é crucial. Mais importante, o uso correto das Transações (DB::transaction) é a chave para garantir a integridade dos dados, enquanto ferramentas de monitoramento garantem a otimização contínua da performance.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de experiência em tecnologia, atuo como Engenheiro de Computação, desenvolvedor de sistemas, escritor e produtor de conteúdo. Minha trajetória passa pelo ensino técnico, desenvolvimento web, arquitetura de sistemas e criação de soluções voltadas para a indústria de jogos digitais. Acredito que conhecimento deve ser acessível e aplicável. Essa visão resultou em uma biblioteca com mais de 550 artigos gratuitos, abrangendo temas como desenvolvimento web, infraestrutura, inteligência artificial, Game Design, mercado de jogos e carreiras na indústria de games. Sou autor do livro "GDD – O Guia Definitivo", uma obra dedicada ao planejamento e documentação de jogos digitais, e criador do GameMeTRix, uma plataforma que auxilia desenvolvedores na análise e validação de ideias para jogos. Meu trabalho busca conectar planejamento, tecnologia e mercado para ajudar criadores a transformar boas ideias em projetos viáveis. Atualmente concentro meus estudos e projetos no desenvolvimento de jogos web, na criação de metodologias para validação de produtos digitais e na produção de conteúdo técnico voltado ao ecossistema de jogos. Meu compromisso é unir teoria, prática e experiência de mercado para contribuir com o crescimento de novos desenvolvedores e profissionais da área.