Download Laravel App
composer create-project --prefer-dist laravel/laravel my-app
C:\xampp\htdocs\laravel>composer create-project --prefer-dist laravel/laravel my-app
Connecting our Database
open .env file root directory.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveldb
DB_USERNAME=root
DB_PASSWORD=
Create Controller EmployeeController
php artisan make:controller EmployeeController
C:\xampp\htdocs\laravel\my-app>php artisan make:controller EmployeeController
app\Http\Controllers\EmployeeController.php
//app\Http\Controllers\EmployeeController.php <?php namespace App\Http\Controllers; use App\Models\Employee; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Carbon; class EmployeeController extends Controller { public function index(Request $request): Response { $query = Employee::query(); $dateFilter = $request->date_filter; switch($dateFilter){ case 'today': $query->whereDate('created_at',Carbon::today()); break; case 'yesterday': $query->wheredate('created_at',Carbon::yesterday()); break; case 'this_week': $query->whereBetween('created_at',[Carbon::now()->startOfWeek(),Carbon::now()->endOfWeek()]); break; case 'last_week': $query->whereBetween('created_at',[Carbon::now()->subWeek(),Carbon::now()]); break; case 'this_month': $query->whereMonth('created_at',Carbon::now()->month); break; case 'last_month': $query->whereMonth('created_at',Carbon::now()->subMonth()->month); break; case 'this_year': $query->whereYear('created_at',Carbon::now()->year); break; case 'last_year': $query->whereYear('created_at',Carbon::now()->subYear()->year); break; } $employees = $query->get(); return response()->view('index',compact('employees','dateFilter')); } }Database Migration
php artisan make:model Employee -m
C:\xampp\htdocs\laravel\my-app>php artisan make:model Employee -m
database/migrations/create_employees_table.php
//database/migrations/create_employees_table.php <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::create('employees', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('last_name'); $table->string('email'); $table->string('gender'); $table->string('position'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('employees'); } };run this migration
C:\xampp\htdocs\laravel\my-app>php artisan migrate
CREATE TABLE `employees` (
`id` bigint(20) UNSIGNED NOT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`gender` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`position` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `employees` (`id`, `name`, `last_name`, `email`, `gender`, `position`, `created_at`, `updated_at`) VALUES
(1, 'Cairocoders', 'Ednalan', 'cairocoders@gmail.com', 'Male', 'Coder', '2023-03-01 12:34:10', '2023-03-01 12:34:10'),
(2, 'Clydey', 'Ednalan', 'clyde@gmail.com', 'Male', 'Coder', '2023-02-01 12:34:10', '2023-02-01 12:34:10'),
(3, 'Airi', 'Satou', 'Satou@gmail.com', 'Female', 'Accountant', '2023-01-01 00:24:05', '2023-01-01 00:24:05'),
(4, 'Angelica', 'Ramos', 'AngelicaRamos@gmail.com', 'Female', 'Chief Executive Officer (CEO)', '2023-01-16 00:24:05', '2023-01-16 00:24:05'),
(5, 'Ashton', 'Cox', 'AshtonCox@gmail.com', 'Male', 'Junior Technical Author', '2022-12-07 00:32:02', '2022-12-07 00:32:02'),
(6, 'Bradler', 'Greer', 'Bradley Greer@gmail.com', 'Male', 'Software Engineer', '2022-10-18 00:32:02', '2022-10-18 00:32:02'),
(7, 'Brenden', 'Wagner', 'Brenden Wagner@gmail.com', 'Male', 'Software Engineer', '2023-01-05 01:02:56', '2023-01-05 01:02:56'),
(8, 'Brielle', 'Williamson', 'Brielle Williamson@gmail.com', 'Female', 'Integration Specialist', '2023-03-14 01:02:56', '2023-03-14 01:02:56'),
(9, 'Bruno', 'Nash', 'Bruno Nash@gmail.com', 'Male', 'Software Engineer', '2023-03-15 01:05:46', '2023-03-15 01:05:46'),
(10, 'Caesar', 'Vance', 'Caesar Vance@gmail.com', 'Male', 'Pre-Sales Support', '2023-03-14 01:05:46', '2023-03-14 01:05:46'),
(11, 'Cara', 'Stevens', 'Cara Stevens@gmail.com', 'Female', 'Sales Assistant', '2023-03-15 01:07:04', '2023-03-15 01:07:04'),
(12, 'Cedric', 'Kelly', 'Cedric Kelly@gmail.com', 'Male', 'Senior Javascript Developer', '2023-03-13 01:07:04', '2023-03-13 01:07:04');
Bootstrap 5
https://getbootstrap.com/docs/5.0/getting-started/introduction/
https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css
Datatables
https://datatables.net/examples/basic_init/zero_configuration.html
resources/views/index.blade.php
routes/web.php
Starting Laravel development server: http://127.0.0.1:8000
https://getbootstrap.com/docs/5.0/getting-started/introduction/
https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css
Datatables
https://datatables.net/examples/basic_init/zero_configuration.html
resources/views/index.blade.php
//resources/views/index.blade.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Laravel Date Filters Today Yesterday This Week Last Week This Month Last Month This Year Last Year</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="https://cdn.datatables.net/1.13.4/css/jquery.dataTables.min.css" /> </head> <body> <div class="container"> <h1 class="text-center text-success pt-4">Laravel Date Filters Today Yesterday This Week Last Week This Month Last Month This Year Last Year</h1> <hr> <div class="row py-2"> <div class="col-md-6"> <h2>List of Empoyees</h3> </div> <div class="col-md-6"> <div class="form-group"> <label for="date_filter">Filter by Date:</label> <form method="get" action="employee"> <div class="input-group"> <select class="form-select" name="date_filter"> <option value="">All Dates</option> <option value="today" {{ $dateFilter == 'today' ? 'selected' : '' }}>Today</option> <option value="yesterday" {{ $dateFilter == 'yesterday' ? 'selected' : '' }}>Yesterday</option> <option value="this_week" {{ $dateFilter == 'this_week' ? 'selected' : '' }}>This Week</option> <option value="last_week" {{ $dateFilter == 'last_week' ? 'selected' : '' }}>Last Week</option> <option value="this_month" {{ $dateFilter == 'this_month' ? 'selected' : '' }}>This Month</option> <option value="last_month" {{ $dateFilter == 'last_month' ? 'selected' : '' }}>Last Month</option> <option value="this_year" {{ $dateFilter == 'this_year' ? 'selected' : '' }}>This Year</option> <option value="last_year" {{ $dateFilter == 'last_year' ? 'selected' : '' }}>Last Year</option> </select> <button type="submit" class="btn btn-primary">Filter</button> </div> </form> </div> </div> </div> <table id="example" class="table table-bordered table-hover display"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Last Name</th> <th>Position</th> <th>Gender</th> <th>E-mail</th> <th>Date Created</th> </tr> </thead> <tbody> @foreach ($employees as $employee) <tr> <td>{{ $employee->id }}</td> <td>{{ $employee->name }}</td> <td>{{ $employee->last_name }}</td> <td>{{ $employee->position }}</td> <td>{{ $employee->gender }}</td> <td>{{ $employee->email }}</td> <td>{{ $employee->created_at->format('Y-m-d H:i:s') }}</td> </tr> @endforeach </tbody> </table> </div> <script src="https://code.jquery.com/jquery-3.5.1.js"></script> <script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script> <script> $(document).ready(function () { $('#example').DataTable(); }); </script> </body> </html>Routes
routes/web.php
//routes/web.php <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\EmployeeController; Route::get('/', function () { return view('welcome'); }); Route::get('/employee',[EmployeeController::class,'index']);Run C:\xampp\htdocs\laravel\my-app>php artisan serve
Starting Laravel development server: http://127.0.0.1:8000