De jQuery para Alpine.js: Um Guia Prático com Laravel e Componentes Reutilizáveis
Se você vem do jQuery e quer modernizar seus projetos com Alpine.js, esse tutorial é pra você. Vamos mostrar como... Leia mais
Desenvolvedor de Software
Trabalhar com intervalos de datas é uma necessidade comum em aplicações web, especialmente em sistemas que lidam com eventos, agendamentos ou relatórios. Neste artigo, vamos explorar como usar o operador BETWEEN entre duas colunas de data no Laravel, tanto com o Eloquent quanto com o Query Builder.
Imagine que você possui uma tabela eventos com as colunas data_inicio e data_fim. Você quer consultar todos os eventos que acontecem em uma data específica, como 2024-11-10. Em SQL, a consulta seria algo como:
SELECT *
FROM eventos
WHERE '2024-11-10' BETWEEN data_inicio AND data_fim;
No Laravel, podemos traduzir essa lógica de forma eficiente usando os recursos do framework.
O Eloquent é a forma mais elegante e intuitiva de trabalhar com o banco de dados no Laravel. Para aplicar o BETWEEN, usamos a seguinte abordagem:
Exemplo:
use App\Models\Evento;
$dataConsulta = ‘2024-11-10’;
$eventos = Evento::whereBetween($dataConsulta, [‘data_inicio’, ‘data_fim’])->get();
whereBetween() é usado para especificar o intervalo de comparação.data_inicio e data_fim delimitam o intervalo.No entanto, o whereBetween() não funciona diretamente para comparar colunas no Eloquent. Nesse caso, precisamos usar DB::raw.
O Query Builder é ideal para casos que exigem maior flexibilidade, como comparações entre colunas. Aqui está como podemos traduzir o BETWEEN:
use Illuminate\Support\Facades\DB;
$dataConsulta = '2024-11-10';
$eventos = DB::table('eventos')
->whereRaw('? BETWEEN data_inicio AND data_fim', [$dataConsulta])
->get();
whereRaw permite inserir expressões SQL personalizadas.? e do array [$dataConsulta] protege contra SQL Injection.data_fim está entre data_inicio e outra coluna, como data_limite:
$eventos = DB::table('eventos')
->whereRaw('data_fim BETWEEN data_inicio AND data_limite')
->get();
Se preferir, você pode usar operadores lógicos em vez de BETWEEN:
$dataConsulta = '2024-11-10';
$eventos = Evento::where('data_inicio', '<=', $dataConsulta)
->where('data_fim', '>=', $dataConsulta)
->get();
Consultar dados usando BETWEEN entre colunas é uma tarefa simples no Laravel, tanto com o Eloquent quanto com o Query Builder. O uso de whereRaw oferece a flexibilidade necessária para comparações entre colunas, enquanto operadores como >= e <= tornam sua consulta mais legível e direta.
Escolha a abordagem que melhor se adapta ao seu cenário e comece a explorar os intervalos de datas no Laravel de forma eficiente!
Se você vem do jQuery e quer modernizar seus projetos com Alpine.js, esse tutorial é pra você. Vamos mostrar como... Leia mais
ROW_NUMBER e Outras Funções para Gerar Resultados Sequenciais no PostgreSQLQuando trabalhamos com bancos de dados, muitas vezes precisamos gerar números sequenciais para nossos resultados. Isso pode ser útil para... Leia mais
Como todo mundo na programação já passou por este clichê, aqui não poderia ser diferente então o primeiro post desse... Leia mais
Hoje boa parte dos banco de dados relacionais podem armazenar campos com valores no formato JSON o que garante maior... Leia mais