Красноречивый оператор LIKE с setBindings не возвращает результаты - PullRequest
0 голосов
/ 09 февраля 2020

Я новичок в Laravel. Приведенный ниже запрос отлично работает и дает ожидаемые результаты:

  $keywords = 'e';
  $pages = DB::table('page_translations')
    ->select('page_translations.id')
    ->where([
      ['page_translations.title','LIKE','%'.$keywords.'%'],
    ])
    ->get()
    ->toArray();

Однако мне не ясно, подвержен ли мой запрос выше введению SQL. Поэтому я решил использовать setBindings, как показано в запросе ниже:

  $keywords = 'e';
  $pages = DB::table('page_translations')
    ->select('page_translations.id')
    ->where([
      ['page_translations.title','LIKE','%?%'],
    ])
    ->setBindings([$keywords])
    ->get()
    ->toArray();

Однако этот запрос с setBindings возвращает ноль результатов. Что я сделал не так? Почему он не ведет себя как запрос выше?

1 Ответ

1 голос
/ 09 февраля 2020

Ваш первый запрос правильный и не подвержен SQL инъекциям.

Как правило, вы бы написали его так:

->where('page_translations.title', 'LIKE', '%'.$keywords.'%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...