雄辩的搜索laravel

问题描述 投票:0回答:1

我在处置表中创建了一个搜索功能。 最初的显示是按照我设定的雄辩的。但是当我更改 search 的值时,我设置的 where 子句无法按我想要的方式工作

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.'%');
                });
    }
    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
        ]);
    }

tahunId 一开始就已经初始化了,所以不会出现除 tahunId 以外的内容 但是当我尝试在 uraian / tgl_disposisi 中搜索值时, tahunId 中的 where 子句无法正常工作

laravel search eloquent-relationship
1个回答
0
投票

修复

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.'%');
                });
            });
© www.soinside.com 2019 - 2024. All rights reserved.