PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kikosik666
Отправлено: 01 Ноября, 2019 - 10:35:49
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Апр. 2017  


Помог: 0 раз(а)




Код для поиска на сайте.

Почему ->where('key', 'like', '%' . $url . '%') не работает?

Хочу чтобы в базе искал те строки у которых урл совпадает с $page_url

Спасибо

PHP:
скопировать код в буфер обмена
  1. public function searchresult(Request $request) {      
  2.                            
  3.             $page_url = [
  4.                     'local-programs',
  5.                     'international-projects',
  6.                     'grants',
  7.                     'news',
  8.                     'press-about-us',
  9.                     'events',
  10.                     'interesting-corner',
  11.                     'annual',
  12.                     'implemented',
  13.                     'events-and-trainings'
  14.                 ];
  15.                            
  16.             $search_word = $request->input('search');              
  17.            
  18.             foreach($page_url as $url)
  19.             {
  20.                 $url = $url;
  21.                
  22.             }
  23.          
  24.                 $search_result = Article::select()
  25.                 ->where('title_am', 'like', '%' . $search_word . '%')
  26.                 ->where('key', 'like', '%' . $url . '%')
  27.  
  28.                 ->get();                      
  29.                 return view('site.search', compact('search_result'));
  30.              
  31.      
  32.     }


Отредактировано модератором: armancho7777777, 02 Ноября, 2019 - 13:41:42
 
 Top
andrewkard
Отправлено: 01 Ноября, 2019 - 16:35:47
Post Id


Участник


Покинул форум
Сообщений всего: 1368
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




kikosik666 пишет:
foreach($page_url as $url)
{
$url = $url;

}

Вы понимаете что Вы тут делаете?
Толочь воду в ступе...

Проверять нужно функцией in_array
(Добавление)
Как получить нужную часть запроса посмотрите тут:
https://stackoverflow[dot]com/questi[dot][dot][dot]ith-query-string
потом посмотрите есть ли она в массиве $page_url, и если совпадение есть, проводим поиск.

Кроме того, поиск по LIKE может сильно нагружать БД и выполнятся очень долго. Лучше так не искать.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Ноября, 2019 - 13:47:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4514
Дата рег-ции: Февр. 2011  


Помог: 219 раз(а)




Полагаю, используете Laravel.
PHP:
скопировать код в буфер обмена
  1. $search_result = Article::select()
  2.     ->where('title_am', 'like', '%' . $search_word . '%')
  3.     ->whereIn('key', 'like', array_map(function($url) {
  4.         return "%$url%";
  5.     }, $page_url))
  6.     ->get();
  7.  
  8. // Or...
  9. $search_result = Article::select()
  10.     ->where('title_am', 'like', '%' . $search_word . '%')
  11.     ->where(function($query) use ($page_url) {
  12.         $query->where('key', 'like', '%' . array_shift($page_url) . '%');
  13.         foreach ($page_url as $url) {
  14.             $query->orWhere('key', 'like', "%$url%");
  15.         }
  16.     })
  17.     ->get();
  18.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB