#php #orm #doctrine
#php #orm #doctrine
Вопрос:
Я использую поведение с возможностью поиска в Doctrine для поиска товаров в моем каталоге. Это отлично работает при поиске ключевых слов, которые действительно соответствуют продукту. Например, ключевое слово «Backpack» возвращает все продукты со словом «Backpack» в названии.
Однако, когда выполняется поиск по ключевому слову, которое вообще не соответствует названию, возвращается каждая запись. Например, «ASDF» возвращает все продукты.
Почему это происходит и как я могу это исправить?
Ответ №1:
У меня была такая же проблема при использовании Lucene. Если я правильно помню, причина, по которой это произошло, заключалась в том, что lucene возвращает список идентификаторов, соответствующих запрошенным параметрам. И если ни одно из них не возвращено, то в Doctrine нет критериев для поиска по, следовательно, запросам без предложения where.
Я ожидаю, что в вашем действии у вас, вероятно, будет вызов Lucene для поиска подходящих продуктов, а затем вызов, использующий эти результаты в качестве критериев для их извлечения; Я решил проблему, вставив if вокруг основного запроса, проверяя, что Lucene вернул что-то полезное.
Комментарии:
1. Обертывание оператора if вокруг основного запроса, чтобы проверить, вернула ли Doctrine что-либо, решило проблему. Спасибо за вашу помощь.