【发布时间】:2020-03-23 14:03:28
【问题描述】:
我想从用户输入中搜索数据库。 一切正常,但是当我尝试使用 PLD 类型查找时,搜索查询没有给我预期的结果。
Firmware 字段可以使用两种 PLD 类型,例如 Firmware:V49,PLD:A5 和 A6。 PLD 类型来自 hwtype 和可选的 hwtype2 字段,固件来自 hw 字段。 这是我的数据库:
我的搜索功能:
public function search(Request $request)
{
$dumpDb = Dumpdb::query();
// Search values for select
$hw = Dumpdb::select('hw')->distinct()->get();
$pld = Dumpdb::select('hwtype')->distinct()->get();
// Search filters
if ($request->has('hw') && $request->input('hw') != '') {
$dumpDb = $dumpDb->where('hw', '=', $request->input('hw'));
}
if ($request->has('pld') && $request->input('pld') != '') {
$dumpDb = $dumpDb->where('hwtype', $request->input('pld'))->orWhere('hwtype2', $request->input('pld'));
}
$countData = $dumpDb->count();
$dumpDb = $dumpDb->orderBy('id', 'desc')->paginate(30);
return view('dumpDb.index', compact('hw', 'pld', 'dumpDb', 'countData', 'hwtype'));
}
【问题讨论】:
-
您期待什么以及目前得到什么??
-
例如用户选择固件:B50 和 PLD 类型:A2,但由于某种原因,我得到了 B50 和用户选择以外的其他固件版本
-
当您使用或使用固件 b50 和 pld a2 获取所有数据时。您必须在 where 闭包中执行此操作。
-
但是没有 orWhere 我的查询没有找到我的记录。我需要循环抛出 hwtype 和 hwtype2。例如,在某些情况下,我在 hwtype 和 hwtype2 中具有相同的 PLD 类型 (A2),因此我需要这两个表中的所有记录。
-
我正在为您添加答案。检查一下。
标签: php laravel search eloquent