我在数据表中编写了一个代码,用于输入id和客户名称,但我需要在不指定列的情况下搜索额外字段。
我需要按列搜索,控制器带有搜索功能:
public function search(Request $request)
{
if ($request->ajax()) {
$output = "";
$indents = DB::table('indents')
->where('id', 'LIKE', '%' . $request->search . '%')
->orwhere('customer_name', 'LIKE', '%' . $request->search . '%')
->orwhere('*', 'LIKE', '%'.$request->search. '%')
->get();
$count=1;
foreach ($indents as $key => $indent) {
$output .= '<tr>' .
'<td>'.$count++.'</td>'.
// '<td>' . $indent->id . '</td>' .
'<td>' . $indent->customer_name . '</td>' .
'<td>' . $indent->phone_no . '</td>' .
'<td>' . $indent->date_of_delivery . '</td>' .
'<td>' . $indent->delivery_at . '</td>' .
'<td>' . '.<a href="' . route('edp.show', $indent->id) . '">.' . '<img src="assets/images/select.jpg" class="imgsize">.' . '</a>.' . '</td>' .
'</tr>';
}
return Response($output);
}
}
答案 0 :(得分:0)
您可以使用Laravel Scount Laravel Scout
或者您可以使用mysql Mysql Full-text Search
实现自己答案 1 :(得分:0)
您可以像这样搜索一系列列:
$columnsToSearch = ['column1', 'column2', 'column3'];
如果您需要从前端/ api传递它们,这些列可以是$request
的一部分。
然后遍历每个$columnsToSearch
并添加到您的查询构建器,如下所示:
$columnsToSearch = ['column1', 'column2', 'column3'];
// or $columnsToSearch = $request->input('columns_to_search');
$searchQuery = '%' . $request->search . '%';
$indents = DB::table('indents')
->where('id', 'LIKE', $searchQuery);
foreach($columnsToSearch as $column) {
$indents = $indents->orWhere($column, 'LIKE', $searchQuery);
}
$indents = $intents->get();
答案 2 :(得分:0)
您可以使用以下内容获取所有表格列:
$columns = DB::getSchemaBuilder()->getColumnListing('indents');
然后为每列添加orwhere()条件。但请注意,除非您添加索引,否则大表的搜索速度会很慢。