使用laravel进行全局搜索

时间:2018-04-05 09:46:08

标签: php laravel laravel-5.5 laravel-5.6

我在数据表中编写了一个代码,用于输入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);
        }

    }

3 个答案:

答案 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()条件。但请注意,除非您添加索引,否则大表的搜索速度会很慢。