Мне нужно создать запрос с Doctrine QueryBuilder используя Еогеасп заявление, в настоящее время, следующие один используется, но не является самым правильным:
// $query object
foreach ($searches as $value) {
$query->andWhere($query->expr()->orX(
$query->expr()->eq('c.firstName', ':name'),
$query->expr()->eq('c.lastName', ':name')
))->setParameter('name', $value);
}
это дает я:
.... ГДЕ .... И (? a0_.first_name = OR a0_.last_name =) И (? a0_.first_name = OR a0_.last_name =) ORDER BY a0_. first_name ASC
, в то время как мне нужно:
... ГДЕ ..... И (a0_.first_name =? ИЛИ a0_.last_name =? ИЛИ a0_.first_name =? ? ИЛИ a0_.last_name =) ORDER BY a0_.first_name ASC
мне нужно что-то вроде этого, но PHP Безразлично»позволяют это конечно:
// $query object
$query->andWhere($query->expr()->orX(
foreach ($searches as $value) {
$query->expr()->eq('c.firstName', ':name'),
$query->expr()->eq('c.lastName', ':name')
}
)
)->setParameter('name', $value);
Не могли бы вы помочь мне использовать оператор Еогеасп чтобы достичь моей цели. Ваша обычная помощь приветствуется.
Это не имеет никакого смысла. Что вы ожидаете от запроса типа 'a0_.first_name =? ИЛИ a0_.first_name =? '? 20 повторений так же хороши, как один «a0_.first_name =?» –
Забудьте о цикле. Используйте Laravel ['whereIn()'] (https://laravel.com/docs/5.4/queries#where-clauses) –
@AlexBlex, $ search - это массив, исходящий из preg_split. Я должен использовать каждое значение массива в качестве поиска по имени и фамилии –