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 jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.