2017-02-13 5 views
0

Я хочу сделать его точным, сначала он должен получить данные от титта и, чем получить описание данных, я попробовал это, но его неточность и описание начинаются сначала вот сайт live here is the demo пример, я хочу фильм Джорджа Лопеса, если я печатаю только Джордж, другие вещи начинают, если я наберу полное имя Джордж Лопес, это помогает мне.laravel поисковая система с использованием карьера, но дело в том, что оно неточно

<?php 
use App\CommunityLink; 
//use App\User; 
use Illuminate\Support\Facades\Input; 

Route::get ('/', function() { 
    return view ('welcome'); 
}); 
Route::post ('/search', function() { 
    $q = Input::get ('q'); 
    $user = CommunityLink::where ('title', 'LIKE', '%' . $q . '%')->orWhere ('description', 'LIKE', '%' . $q . '%')->get(); 
    if (count ($user) > 0) 
     return view ('welcome')->withDetails ($user)->withQuery ($q); 
    else 
     return view ('welcome')->withMessage ('No Details found. Try to search again !'); 
}); 

ответ

0

Это решение, которое подходит именно вам. В основном, что он делает, он ищет по названию и описанию и ставит результаты с соответствующими заголовками поверх коллекции результатов.

//define the keywords variable 
$q = '%'.$request->q.'%'; // '%'.Input::get ('q').'%' 

//Run the query 
$result = Community::where('title', 'Like', '?') 
->orWhere('description', 'Like', '?') 
->orderByRaw(" 
    CASE WHEN title LIKE ? THEN 1 
     WHEN description LIKE ? THEN 2 
     ELSE 3 END 
") 
->setBindings([$q, $q, $q, $q]) 
->get(); 

Переходим $q 4 раза, потому что мы называем это в 4-х различных местах. Это может быть не самый лучший способ, но он выполняет свою работу и довольно быстро.

Теперь ваши результаты будут иметь фильтр с соответствующим заголовком сверху, а затем соответствующее описание.

+0

Спасибо за ответ, но у меня есть эта ошибка сейчас. Попытка получить свойство не-объекта –

+0

В моем коде я дал вам выбор. Вы не используете оба. только один. ОК. Измените в своем коде строку, в которой вы написали '$ q = '%'. $ Request-> q. '%';' Измените ее на '$ q = '%'. Input :: get ('q'). % '; '. Он работает нормально. Я тестировал все – EddyTheDove

+0

Это работает, спасибо, много чего вы знаете что-то о автокомпоненте в laravel, свалившись с карьером, я много искал, но ничего не нашел для меня ничего полезного. –