Grails - поиск по разным полям
Я использую Grails 2.3.x и плагин для поиска,
Представьте себе следующую книгу классов домена (Автор строки, Название строки, Дата pubDate);
Мне нужно сделать поиск по разным полям, например;
Я хочу искать книги с датой публикации (pubDate) между Field1: 03/03/2014
а также Field2: 04/04/2014
Также, например: книги с названием X и pubDate между Field1: 03/03/2014
а также Field2: 04/04/2014
В любом случае сделать поиск с другими параметрами с помощью плагина для поиска?
Большое спасибо.
РЕДАКТИРОВАТЬ: Где мне нужно написать этот код?def search = {
...
Book.search {
gt("pubDate", field1)
lt("pubDate", field2)
}
}
1 ответ
Searchable предоставляет построитель поиска, который должен выполнить это. Вы можете сделать свой поиск следующим образом:
Book.search {
gt("pubDate", field1)
lt("pubDate", field2)
}
а также
Book.search {
term("title", x)
gt("pubDate", field1)
lt("pubDate", field2)
}
Этот код будет искать в индексе все Book
объекты, которые соответствуют критериям и возвращают List
те Book
s. Вы можете поместить это в свой контроллер или в службу. Например, вот как это будет выглядеть в действии контроллера:
def searchBooks(String title, Date pubDate) {
def books = Book.search(result: 'every') {
term('title', title)
gt('pubDate', pubDate)
}
render view: 'list', [bookList: books]
}
Смотрите этот документ: http://grails.org/Searchable+Plugin+-+Searching+-+Query+Builder