Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Curso de Laravel para Noobs - #13 Models IV [Consultas Opcionais]

06/04/2023

Nesse tutorial aprenderemos como utilizar consultas opcionais dentro do Laravel utilizando o Eloquent.

Consultas opcionais no Laravel

routes/web.php

Primeiramente vamos criar duas rotas, uma para o formulário e outra para o post de pesquisa:

Route::get('/pesquisa', [Controller::class,'pesquisa']);
Route::post('/pesquisa', [NomeController::class,'pesquisa']);

resource/views/pesquisa.blade.php

Trata-se de um html simples com o formulário de pesquisa utilizado de exemplo na aula:

<form method="post" action="" name="formFiltros" id="formFiltros">
    @csrf
    <div class="filtros">
        <div><input type="text" name="name" id="name" placeholder="Pesquisar por nome:"></div>
        <div>
            <input type="date" name="startDate" id="searchStartDate"> à
            <input type="date" name="endDate" id="searchEndDate">
        </div>
        <div><input type="submit" value="Buscar"></div>
    </div>
</form>

Na sequência criaremos o model, o controller e a migration via Laravel Cli no terminal de comandos:

php artisan make:model Nome -mcr

database/migrations/create_nomes_table.php

Nossa migration ficará da seguinte forma:

public function up()
{
    Schema::create('nomes', function (Blueprint $table) {
        $table->id();
        $table->string('nome');
        $table->dateTime('data');
        $table->timestamps();
    });
}

Posteriormente podemos enviar a tabela para o banco:

php artisan migrate

No PhpMyAdmin vamos inserir dois registros de teste:

INSERT INTO `nomes` (`id`, `nome`, `data`, `created_at`, `updated_at`) VALUES ('1', 'Thiago', '2023-04-01 11:31:50', NULL, NULL), ('2', 'Thais', '2023-04-27 11:31:50', NULL, NULL);

app/Http/NomeController.php

No nome controller executaremos a busca:

/**
 * Executar a pesquisa opcional
*/
public function pesquisa(Request $request)
{
    $starDate = new \DateTime($request->startDate);
    $endDate = new \DateTime($request->endDate);
    $nomes = Nome::where('nome','like','%'.$request->name.'%')
        ->when($request->startDate, function($query) use($starDate,$endDate){
            $query->whereDate('data','>=',$starDate->format('Y-m-d').' 00:00:00');
            $query->whereDate('data','<=',$endDate->format('Y-m-d').' 23:59:59');
        })
        ->get();
    dd($nomes);
}

Não esqueça de inicializar o servidor:

php artisan serve

Por hoje é só! Fiquem todos com Deus! Sucesso nos códigos e na vida!

Precisa de um professor? webdesignemfoco@gmail.com

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Curso de Laravel para Noobs - #12 Models III [Consultas com Relacionamento]
Nesse tutorial aprenderemos como realizar consultas no banco de dados Laravel utilizando tabelas com relacionamentos.
Saiba mais!
Curso de Laravel para Noobs - #14 Models V [Cadastro]
No tutorial de hoje aprenderemos como realizar cadastros no banco de dados MySQL utilizando o Laravel.
Saiba mais!
Framework
Nessa playlist aprenderemos um pouco mais sobre os diferentes frameworks existentes, apontando os defeitos e qualidades de cada um.
Saiba mais!