Search Data
Cari Tanggal Menggunakan Kalimat - Tanpa Query
- Untuk pencarian tanggal menggunakan kalimat cukup mendaftarkan nama kolom di property
searchableColumnspada model.protected array $searchableColumns = [
'kpt187a_date',
'created',
'updated',
]; - Kolom-kolom yang didukung pencarian tanpa query hanya dengan kolom yang berawalan
date_, berakhiran_data, kolomcreateddanupdated.
Cari Tanggal Menggunakan Kalimat - Dengan Query
Jika nama kolom tidak memenuhi pada search tanpa query.
Maka perlu meng-override
customSearchdi service.protected function customSearch(Builder $query, Request $request, Collection $tasks = null): Builder
{
$search = $request->input('search');
if ($search) {
$query->orWhereRaw(...DateHelper::getQuerySearchDate('lktpk', $search));
}
return $query;
}Dan menggunakan fungsi
getQuerySearchDatepadaDateHelperdengan parameter adalah nama kolom yang ingin dicari.⚠️ Perlu diingat: nama kolom yang menggunakan query tidak perlu didaftarkan pada
searchableColumns
Pencarian Data Enum
Pencarian enum dengan menggunakan kalimat dapat dilakukan dengan mengimplementasi trait
HasEnumQuery.Enum wajib memiliki
getDescription()ataugetLabel()yang berfungsi untuk mentransformasi nilai enum ke kalimat.public static function getDescription($value)
{
$description = [
self::DRAFT->value => LabelStatus::DRAFT->value,
self::REVIEW_KASATGAS->value => 'Review Kasatgas',
self::APPROVAL_DIREKTUR->value => 'Menunggu Persetujuan Direktur',
self::APPROVAL_DEPUTI->value => 'Menunggu Persetujuan Deputi',
self::APPROVED->value => LabelStatus::APPROVED->value,
self::REJECTED->value => LabelStatus::REJECTED->value,
self::BARU->value => LabelStatus::NEW->value,
];
return $description[$value] ?? '-';
}Maka tinggal meng-override fungsi
customSearchserta implementasigetQuery()pada enum dengan parameter pertama adalah nama kolom.protected function customSearch(Builder $query, Request $request, Collection $tasks = null): Builder
{
$search = $request->input('search');
if ($search) {
$query->orWhereRaw(ApprovalDeputiStatus::getQuery('status').' ILIKE ? ', "%$search%");
}
return $query;
}⚠️ Perlu diingat: nama kolom yang menggunakan query tidak perlu didaftarkan pada
searchableColumns