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::selecteDB::get()do Query Builder usarão as conexõesread, e todas as chamadasDB::insert,DB::updateeDB::deleteusarão a conexãowrite.
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étodo | Tipo de Query | Exemplo |
DB::select | SELECT | DB::select('SELECT * FROM users WHERE active = ?', [1]); |
DB::insert | INSERT | DB::insert('INSERT INTO users (name) values (?)', ['Dayle']); |
DB::update | UPDATE | DB::update('UPDATE users SET votes = 100 WHERE id = ?', [1]); |
DB::delete | DELETE | DB::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:
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:















