$q = $request->query('q');
$faktur = FakturKonsinyasi::with(['indukbuku', 'distributor'])
->where('qty', '<>', 0)
->where('id_faktur_konsinyasi', 'like', '%' . $q . '%')
->where('id_faktur_konsinyasi', 'like', 'FKTKNST%')
->orderBy('id_faktur_konsinyasi', 'ASC');
if(!str_contains($q,'FKTKNST') && !empty($q)) {
$faktur = $faktur->whereHas('indukbuku', function ($query) use ($q) {
$query->where('judul_buku', 'like', '%' . $q . '%');
})->orWhereHas('distributor', function ($query) use ($q) {
$query->where('nm_distributor', 'like', '%' . $q . '%');
});
}
$faktur = $faktur->paginate(10);
上面的代码不起作用。我想通过 id_faktur_konsinyasi 过滤 $faktur,id 从“FKTKNST”开始,如果 id_faktur_konsinyasi 只有两个条件,它就可以工作。但是,当添加这两个 whereHa 时,where 外部条件块中的所有内容都将被忽略。
浏览,当然包括人工智能,他们的结果都不起作用。
发生这种情况是因为您混合了“与”和“或”条件。
尝试隔离他们...
$q = $request->query('q');
$faktur = FakturKonsinyasi::with(['indukbuku', 'distributor'])
->where('qty', '<>', 0)
->where('id_faktur_konsinyasi', 'like', '%' . $q . '%')
->where('id_faktur_konsinyasi', 'like', 'FKTKNST%')
->orderBy('id_faktur_konsinyasi', 'ASC');
if(!str_contains($q,'FKTKNST') && !empty($q)) {
$faktur->where(function ($builder) use ($q) {
$builder->whereHas('indukbuku', function ($query) use ($q) {
$query->where('judul_buku', 'like', '%' . $q . '%');
})->orWhereHas('distributor', function ($query) use ($q) {
$query->where('nm_distributor', 'like', '%' . $q . '%');
});
});
}
$faktur = $faktur->paginate(10);