mGm
mGm

Reputation: 262

Filter search result based on query parameter

Utilizing Grails dynamic programming, I want to create a logic that will list all results when no query parameter is provided and filter only those entries when either a single or multiple query parameters are provided.

For example

A domain class A with parameters firstName, lastName, age and address.

def func(){
  def c = A.createCriteria()
  def results = c.list(){
    like('lastName', params.lname)
  }
  return [results: results]
}

This code returns some output when some query parameter is provided. When no query parameter is provided, it simply returns an empty results list. Is it possible to do all of this inside one function.

I want it to look for provided query parameters and filter the results accordingly, and return all entries if no query parameter is given.

Upvotes: 0

Views: 191

Answers (1)

Lonyui
Lonyui

Reputation: 101

add if(params.lname) before like('lastName') to make return all entries if no query parameter is given.

def results = A.createCriteria().list(params){
    or{
        if(params.lname){
        ilike('lastName', '%${params.lname}%')
        }
        if(params.fname){
        eq('firstName', params.fname)
        }
    }
}

Upvotes: 1

Related Questions