Postingan lainnya
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
0
2 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.'%');
});
});
0