Я хочу выбрать записи, в которых есть хотя бы одно из искомых ключевых слов.
Ключевые слова хранятся в одном поле, разделенном запятой, например:
+--------------------------+
| keywords |
+--------------------------+
|symfony,html,css,php,ajax |
+--------------------------+
|symfony,php,linux,c++ |
+--------------------------+
Предполагается, что пользователь ищет следующие ключевые слова: symfony и html
Запрос должен вернуть эти две строки выше, потому что ключевое слово symfony существует в двух строках, но возвращает только первое поле с ключевыми словами ведьмы, содержащее эти два ключевых слова
var_dump of $data['keywords']
string(12) "symfony,html"
А это запрос
if (!empty($data['keywords'])) {
$keys = explode(',', $data['keywords']);
foreach ($keys as $key)
{
$qb->andWhere('j.keywords like :keyword');
$qb->setParameter("keyword", '%'.$key.'%');
}
}