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