Skip to main content

Search Data

Cari Tanggal Menggunakan Kalimat - Tanpa Query

  1. Untuk pencarian tanggal menggunakan kalimat cukup mendaftarkan nama kolom di property searchableColumns pada model.
     protected array $searchableColumns = [
    'kpt187a_date',
    'created',
    'updated',
    ];
  2. Kolom-kolom yang didukung pencarian tanpa query hanya dengan kolom yang berawalan date_, berakhiran _data, kolom created dan updated.

Cari Tanggal Menggunakan Kalimat - Dengan Query

  1. Jika nama kolom tidak memenuhi pada search tanpa query.

  2. Maka perlu meng-override customSearch di 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;
    }
  3. Dan menggunakan fungsi getQuerySearchDate pada DateHelper dengan parameter adalah nama kolom yang ingin dicari.

    ⚠️ Perlu diingat: nama kolom yang menggunakan query tidak perlu didaftarkan pada searchableColumns

Pencarian Data Enum

  1. Pencarian enum dengan menggunakan kalimat dapat dilakukan dengan mengimplementasi trait HasEnumQuery.

  2. Enum wajib memiliki getDescription() atau getLabel() 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] ?? '-';
    }
  3. Maka tinggal meng-override fungsi customSearch serta implementasi getQuery() 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