I am showing a Datatable of the standard Users table in Laravel. I want to be able to provide date ranges which will filter the results and only display Users where created_at falls within those ranges.
My livewire component looks like this:
<?php
namespace App\Http\Livewire;
use Mediconesystems\LivewireDatatables\Column;
use Mediconesystems\LivewireDatatables\Http\Livewire\LivewireDatatable;
use Mediconesystems\LivewireDatatables\DateColumn;
class User extends LivewireDatatable
{
/**
* @return \Illuminate\Database\Eloquent\Builder
*/
public function builder()
{
$q = \App\Models\User::query()->orderBy('id', 'desc');
return $q;
}
/**
* @return array
*/
public function columns()
{
return [
Column::name('name')
->label('User Name'),
DateColumn::name('created_at')
->label('Created At')
->filterable(),
Column::callback(['id', 'name'], function ($id, $name) {
return view('user.actions', ['id' => $id, 'name' => $name]);
})->unsortable()
];
}
}
As you can see i've added filterable() to the created_at column
Here is my blade file:
@extends('layouts.app')
@section('content')
<x-heading>Dashboard</x-heading>
<x-border-box>
<div v-pre>
<livewire:user :hide-header="true" :hide-pagination="true" sort="id|asc" />
</div>
</x-border-box>
@endsection
In the browser, I see the filter options above the created_at column in the table, however; when entering values the table does not refresh to reflect the filters, nothing happens.