eloquent search pada laravel

Saya sedang membuat fitur search pada tabel disposisi saat tampilan awal tabel tersebut sudah sesuai dengan apa yg saya atur pada eloquent tetapi setelah nilai search saya isi , where clause yang saya berikan tidak berjalan

fungsi render

    public function render()
    {
        $tahunId = Tahun::where('tahun_anggaran',$this->jadwal->tahun_anggaran)->pluck('id')->toArray();
        $disposisis = Disposisi::search($this->search, $tahunId)
            ->orderBy($this->sortField, $this->sortAsc ? 'asc' : 'desc')
            ->paginate($this->perPage!=0 ? $this->perPage : Disposisi::count());

        return view('livewire.disposisi.disposisi-index',[
            'disposisis' => $disposisis
        ]);
    }

pengaturan eloquent search

public static function search($search,$tahunId)
    {
        return empty($search) ? static::query()->with('kegiatan','opd','tahun')
                ->whereIn('tahun_id', $tahunId)
            : static::query()->with('kegiatan','opd','tahun')
                ->whereIn('tahun_id', $tahunId)
                ->where('no_proposal', 'like', '%'.$search.'%')
                ->orWhere('uraian', 'like', '%'.$search.'%')
                ->orWhere('tgl_disposisi', 'like', '%'.$search.'%')
                ->orWhere('nominal_disposisi', 'like', '%'.$search.'%')
                ->orWhere('penerima', 'like', '%'.$search.'%')
                ->orWhere('alamat', 'like', '%'.$search.'%')
                ->orWhere('status', 'like', '%'.$search.'%')
                ->orWhereHas('kegiatan',function ($q) use ($search){
                    $q->where('jenis_kegiatan', 'like', '%'.$search.'%');
                })
                ->orWhereHas('opd',function ($q) use ($search){
                    $q->where('nama_opd', 'like', '%'.$search.'%');
                })
                ->orWhereHas('tahun',function ($q) use ($search){
                    $q->where('tahun_anggaran', 'like', '%'.$search.'%');
                    $q->orWhere('tahapan', 'like', '%'.$search.'%');
                    $q->orWhere('deskripsi', 'like', '%'.$search.'%');
                });
    }

permasalahan sudah saya batasi dengan whereIn tahun id hanya yng ada di $tahunId saja. tetapi saat coba cari tgl_dispo atau uraian selain di $tahunId malah muncul ,harusnya tidak muncul

mohon bantuan kawan

avatar sudjitoe
@sudjitoe

21 Kontribusi 14 Poin

Diperbarui 2 minggu yang lalu

1 Jawaban:

fix

return empty($search) ? static::query()->with('kegiatan','opd','tahun')
                ->whereIn('tahun_id', $tahunId)
                ->where('opd_id', $user->userOpd->opd_id)
            : static::query()->with('kegiatan','opd','tahun')
                ->whereIn('tahun_id', $tahunId)
                ->where('opd_id', $user->userOpd->opd_id)
                ->where(function ($q) use ($search){
                    $q->where('uraian', 'like', '%'.$search.'%')
                    ->orWhere('tgl_disposisi', 'like', '%'.$search.'%')
                    ->orWhere('nominal_disposisi', 'like', '%'.$search.'%')
                    ->orWhereHas('kegiatan',function ($q) use ($search){
                        $q->where('jenis_kegiatan', 'like', '%'.$search.'%');
                    })
                    ->orWhereHas('opd',function ($q) use ($search){
                        $q->where('nama_opd', 'like', '%'.$search.'%');
                    })
                    ->orWhereHas('tahun',function ($q) use ($search){
                        $q->where('tahun_anggaran', 'like', '%'.$search.'%');
                        $q->orWhere('tahapan', 'like', '%'.$search.'%');
                    });
                });
avatar sudjitoe
@sudjitoe

21 Kontribusi 14 Poin

Dipost 2 minggu yang lalu

Login untuk ikut Jawaban