pada livewire/controller dalam class Siswa extends Component {
taro use ini
use Livewire\WithPagination;
dalam class Siswa extends Component
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $searchTerm;
dalam public function render() {
jika codingan awal get nya seperti ini
$siswadata = SiswaModel::orderBy('created_at', 'DESC')->get();
ubah menjadi
ada tambahan $searchTerm = '%'.$this->searchTerm . '%'; fungsinya untuk multi search field
$searchTerm = '%'.$this->searchTerm . '%';
$siswadata = SiswaModel::where('nama_siswa', 'like', $searchTerm)
->orWhere('nis', 'like', $searchTerm)
->orWhere('nisn', 'like', $searchTerm)
->orderBy('created_at', 'DESC')
//'guru' fungsinya untuk fokus 1 table biar tidak terjadi eror ketika ada 2 table dalam 1 halaman
->paginate(10, ['*'], 'siswa');
fungsi ->orWhere
sebagai multi search field jika ingin mencari dari field yg lainnya
fungsi ->paginate(10, ['*'], 'siswa');
10 artinya menampilkan data 10 halaman
* artinya semua data
siswa fungsinya agar tidak bentrok jika terdapat 2 table dalam 1 halaman
tambahkan method baru dalam livewire
public function resetSearch()
{
$this->reset(['searchTerm']);
}
fungsi untuk reset text search dengan tombol silang
dalam blade
untuk tampilan dan fungsi pagination
<div class="paginateContainer d-flex flex-column flex-md-row justify-content-center justify-content-md-between align-items-center mt-4 mb-2 mx-2" style="font-size: 15px;">
<span style="margin-top: -0.5em" class="mb-3 mb-md-0">
Menampilkan {{ $siswadata->firstItem() }} Hingga {{ $siswadata->lastItem() }} Data Dari {{$siswadata->total()}} Total Data
</span>
<span class="d-block d-md-none">
{!! $siswadata->onEachSide(1)->links() !!}
</span>
<span class="d-none d-md-block">
{!! $siswadata->onEachSide(4)->links() !!}
</span>
</div>
tampilan search dan fungsi search
{{-- Searchbar --}}
<div class="px-3">
<div class="border border-dark my-3 px-2 py-1 rounded-2 d-flex w-100" style="font-size: 14px;">
<div class="d-flex align-items-center position-relative w-100">
<svg height="20px" width="20px" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>
<input type="text" wire:model.live.debounce.300ms="searchTerm" class="form-control form-control-sm rounded-pill border-0 pe-4" style="box-shadow: none !important;" placeholder="Cari berdasarkan Nama Siswa, NIS Dan NISN">
@if($this->searchTerm)
<div style="position: absolute; right: 0; cursor: pointer;">
<svg height="20px" width="20px" class="text-danger" wire:click.prevent="resetSearch()" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg>
</div>
@endif
</div>
</div>
</div>
{{-- End --}}
fungsi code dibawah ini untuk tombol reset search
@if($this->searchTerm)
<div style="position: absolute; right: 0; cursor: pointer;">
<svg height="20px" width="20px" class="text-danger" wire:click.prevent="resetSearch()" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg>
</div>
@endif