J'ai la requête suivante que je voudrais trier par "raceDate" et par "raceNo" asc. Je peux comprendre comment trier par un domaine, mais pas par deux, des idées?Tri sur plusieurs champs avec des critères dans Grails
def list = {
params.max = Math.min(params.max ? params.max.toInteger() : 20, 100)
params.offset = params?.offset?.toInteger() ?: 0
params.sort = "raceDate"
params.order = params?.order ?: "asc"
def results = Race.createCriteria().list(
max: params.max,
offset: params.offset,
sort: params.sort,
order: params.order
) {
and {
if (params.raceNo && params.raceNo != '')
eq("raceNo", params.raceNo.toInteger())
if (params.country && params.country != '')
eq("country", params.country)
if (params.venue && params.venue != '')
eq("venue", params.venue)
if (params.raceType && params.raceType != '')
eq("raceType", params.raceType)
if (params.surface && params.surface != '')
eq("surface", params.surface)
if (params.officialGoing && params.officialGoing != '')
eq("officialGoing", params.officialGoing)
if (params.raceDateStart_year && params.raceDateStart_month && params.raceDateStart_day
&& params.raceDateEnd_year && params.raceDateEnd_month && params.raceDateEnd_day) {
String startInput = "${params.raceDateStart_year}/${params.raceDateStart_month}/${params.raceDateStart_day}"
Date startDate = jodaFormatter.parseDateTime(startInput).toDate();
String endInput = "${params.raceDateEnd_year}/${params.raceDateEnd_month}/${params.raceDateEnd_day}"
Date endDate = jodaFormatter.parseDateTime(endInput).toDate();
between("raceDate", startDate, endDate)
}
}
}
[ raceInstanceList:results, raceInstanceTotal:results.totalCount, params:params ]
}
Je pense que votre exemple pourrait être coupé un peu. class Foo {String name Âge int } Ensuite, demandez, comment puis-je utiliser des critères GORM pour commander d'abord par nom, puis par l'âge? –
[déjà répondu ici] [1] [1]: http://stackoverflow.com/questions/326053/how-to-order-by-more-than-one-field-in-grails – havana59er