2014-12-29 5 views
1

Как я могу выполнить запрос Like с несколькими значениями для поиска?Laravel Like Eloquent со значением массива?

$searchWords = explode(' ', Input::get('search')); 

Затем я получаю массив слов, которые были указаны для поиска.

Как я могу передать его в этом:

$pages = Page::where('content', 'LIKE', '%'.$singleWord.'%')->distinct()->get(); 

петля не может работать, то он перезаписывает $ страниц всегда; то он держит всегда последнюю поиск:

foreach($searchWords as $word){ 
    $pages = Page::where('content', 'LIKE', '%'.$word.'%')->distinct()->get(); 
} 

ответ

3

петля является решением, но вам нужно только добавить, когда условие без выполнения запроса

$pages = Page::query(); 
foreach($searchWords as $word){ 
    $pages->orWhere('content', 'LIKE', '%'.$word.'%'); 
} 
$pages = $pages->distinct()->get(); 
+0

Это не работает. Я получаю все страницы. – user1469734

+0

Можете ли вы использовать '-> toSql()' вместо '-> get()' и показать мне возвращаемое значение? – lukasgeiter

+1

Он работает, вы должны использовать ключевое слово, которое возвращает все страницы, вот и все. –

-1

я буду кодироваться для вас:

$pages = Page->where(function($query) use($word){ 

foreach($searchWords as $word){ 
    $query->orWhere('content', 'LIKE', '%'.$word.'%'); 
} 

})->get(); 

вы можете попробовать это, я надеюсь, что это поможет :)

+0

ответ уже был дан – user1469734

Смежные вопросы