Поиск в базе данных Laravel или конвертирование запросов - PullRequest
0 голосов
/ 01 декабря 2018

Здравствуйте, у меня есть таблица базы данных с 10 столбцами, с именами'id ',' col1 '~' col9 ', я ищу в интернете и не могу понять, как искать данные.Например, я набираю 'abc' в качестве содержимого для поиска по столбцам базы данных (без ограничений по одному столбцу).Я попытался использовать foreach ($ results как $ key => $ value и проверить $ vlue с помощью входных данных, но потом понятия не имел, чтобы поместить данные в массив как чистый многомерный массив. У меня есть две мысли о том, какпоиск 1. Я преобразую все данные базы данных в многомерный массив (не объект в массиве), чтобы я мог использовать strpos для повторного цикла, чтобы проверить данные, которые у меня есть 2. Я буду использовать foreach ($ results как $ key => $ value) сравните значение и сохраните этот объект в новом массиве.

Может ли кто-нибудь рассказать мне, какой способ проще? Как позже я собираюсь экспортировать и импортировать CSV-файлы, я предпочитаю 1-й вариант. Так что массив будетбыть легко экспортирован в CSV.

    public function search(Request $request)
{

      $search = $request->input('searchcontent');
     $results = DB::table('records')->get();
     $records=[];
     $i=0;

     foreach($results as $key=>$value)

     {
         if($search==$value)
         {
            $records[$i]=[$key=>$value];
            $i++;
         }
     }




    return view('home',['records'=>$records]);
}  

1 Ответ

0 голосов
/ 01 декабря 2018

Во-первых, я бы посмотрел на показатели производительности, нужно ли искать все 10 столбцов из одного поискового запроса, потому что это будет дорого и очень медленно, если у вас есть миллионы записей.

Во-вторых, вы добавили индексы ко всемиз ваших доступных для поиска столбцов, чтобы база данных могла выполнять намного более быстрый поиск.

и, наконец, я бы избегал получения данных и циклов, где вы можете, иногда это нормально, если вы не выполняете дорогостоящие операции в цикле.

для поиска столбца вы можете сделать

Model::where('column1', 'LIKE', '%'.$searchterm.'%')->orWhere('column2', 'LIKE', '%'.$searchterm.'%') etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...