Grails如何做多个搜索查询

时间:2014-03-01 05:38:34

标签: java grails

我的控制器有这个:

def purchaseRequestList = PurchaseRequest.createCriteria().list (params) {      
    if ( params.query) {        
        ilike('requestBy', "%${params.query}%")     
    }

上面是我的列表方法的片段

它只能通过params requestBy

进行一次搜索

然后我在我的gsp

中这样做
<g:form action="listPurchaseRequest" method="GET">
    <g:textField id="search" class="pull-right" name="query" value="${params.query}" placeholder=" Search"/>
</g:form>

现在我添加了一个新的requestNumber参数

我如何进行两次或多次搜索?

2 个答案:

答案 0 :(得分:1)

我猜你想使用单个参数query来搜索域类PurchaseRequest中的多个字段。这可以这样做:

def purchaseRequestList = PurchaseRequest.findAllByRequestByLikeOrRequestNumberLike("%${params.query}%", "%${params.query}%", params)

请参阅Dynamic Finders section of the Grails docs

答案 1 :(得分:0)

另一种选择可以是使用或{}:

为模型的不同参数嵌套ilike
def users = User.createCriteria().list(params) {
        if (params.query) {
            or {
                ilike("fullName", "%${params.query}%")
                ilike("email", "%${params.query}%")
            }
        }