Последующий запрос, не включайте уже собранный результатPhp

Кемеровские программисты php общаются здесь
Anonymous
Последующий запрос, не включайте уже собранный результат

Сообщение Anonymous »

Немного странно

Я написал в своем репозитории функцию поиска, которая принимает строковый запрос.

При этом он выполняет быстрый запрос с поиском по подстановочным знакам в заголовке объекта в поисках совпадения для первого бита заголовка.

После этого я выполняю второй запрос (поскольку Doctrine2 не поддерживает союзы), чтобы выполнить общий поиск по подстановочным знакам по всему заголовку.

Очевидно, это будет означать, что он получает те же результаты, что и предыдущий запрос. Итак, я хочу сообщить DQL во втором запросе, чтобы игнорировать уже полученные результаты.

Но я просто не знаю, как это вообще предоставить

Вот моя функция поиска:< /p>

Код: Выделить всё

    public function search($search) {

$query = $this->getEntityManager()->createQueryBuilder();
$query->select('v')
->from($this->getEntityName(), 'v')
->where($query->expr()->like('v.title', $query->expr()->literal(sprintf('%s%%', $search))));

$set1 = $query->getQuery()->getResult();

$query->where(
$query->expr()->andX(
$query->expr()->like('v.title', $query->expr()->literal(sprintf('%%%s%%', $search))),
$query->expr()->notIn('v',  $set1) // Trying to provide the already acquired set of the results, to negate from this query
)
);

$set2 = $query->getQuery()->getResult();

$result = array_merge($set1, $set2);

return $result;
}
Это сейчас не работает, поскольку пытается преобразовать массив в строку.

Это может показаться претенциозным, но я бы не хотел писать цикл по первому набору только для извлечения массива идентификаторов, чтобы предоставить второй набор для отрицания. Я знаю, что DQL поддерживает чтение полных объектов сущностей и массивов полных объектов, но я уверен, что просто не наткнулся на правильный метод предиката, который знает, как его использовать.

Подробнее здесь: https://stackoverflow.com/questions/253 ... ted-result

Вернуться в «Php»