2015-06-02 3 views
2
$a = table::select('name')->where('name', 'LIKE', '%'.$term.'%')->get(); 

$ term содержит значение, введенное пользователем. Моя проблема, похоже, не работает, и она возвращает все результаты из таблицы независимо от слова «$ term».Laravel Like Query Issue

Если я сделать запрос типа -

$a = table::select('name')->where('name', 'LIKE', '%abc%')->get(); 

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

EDIT -

Я нашел проблему. Мой термин не получал значения. Такой глупый вопрос. Спасибо всем, кто ответил.

+1

запрос в порядке. странно, что он не работает? –

+0

Вы уверены, что получаете значение в '$ term' –

+0

, пожалуйста, проверьте значение' $ term'. либо «null», либо «white space», либо может быть «специальным символом, похожим на косые черты» и т. д. –

ответ

1

Не уверен, что на самом деле, что случилось, она выглядит хорошо, вы можете также использовать sprintf функции, как показано ниже

$a = table::select('name')->where('name', 'LIKE', sprintf("%%%s%%",$term))->get(); 

// OR 

$a = table::select('name')->where('name', 'LIKE', "%$term%")->get(); 
+0

Это также возвращает все результаты. Даже я не понимаю, что не так. Когда я передаю строку, она определенно дает ожидаемый результат. – HelpPR

+0

означает ли '$ term' значение null? Я думаю, '$ term' является вопросом –

+0

Да. это была проблема. Спасибо, что вы меня исправили. – HelpPR

1

Несмотря на то, что нет ничего плохого в вашем SQL запросе я предлагаю вам проверить значение из $term

Вы также можете попробовать это:

$a = table::select("name")->where("name", "LIKE", "% $term %")->get(); 

ИЛИ

$a = table::select("name")->where("name", "LIKE", "% {$term} %")->get(); 
+0

Тот же результат. Также возвращает все результаты, независимо от срока. :( – HelpPR

+0

Не могли бы вы рассказать мне, что означает $ term .. –

+0

$ Срок был проблемой. Я исправился, спасибо за ответ, – HelpPR

1

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

$a = table::select('name')->where('name', 'LIKE', "%.$term.%")->get(); 
+0

к сожалению это не работает. – HelpPR

+0

проверьте, получаете ли вы значение $ term, как требуется эхом – Ashwani