在 Grails 控制器中对父子元素进行排序

Posted

技术标签:

【中文标题】在 Grails 控制器中对父子元素进行排序【英文标题】:Sorting Parent and Child in Grails Controller 【发布时间】:2014-01-27 02:12:05 【问题描述】:

您好,我正在尝试在渲染 json 文件之前在父子控制器中执行排序,但我不知道该怎么做。这是我所拥有的(原始代码摘录):

class Parent
    static hasMany = [children:Child]
    String name
    Date dateCreated


class Child 
    static belongsTo = [parent:Parent]
    String name
    Date dateCreated

在我的控制器 .groovy 文件中,我有:

def list()
    def result = Parent.listOrderByDateCreated(order: "desc")
    .... more code ....

    withFormat
        json render result as JSON
        xml render result as XML 
    

并且上述工作(父按创建日期排序)但我不确定如何按列表中创建的日期对所有子项进行排序。

提前感谢您的帮助。我也在使用 Grails 2.3.2

【问题讨论】:

【参考方案1】:

一种方法是假设您总是希望孩子按创建日期排序。将以下内容添加到您的父域:

static mapping = 
  children sort: 'dateCreated'

另一种方法是在提取结果后进行排序:

def sortedChildren = parent.children.sort  it.dateCreated 

我不知道是否有更好的“grailsier”方式通过查找器或标准来做到这一点。

【讨论】:

我喜欢 grailsier 方式:)。是否有排序 desc 与 asc 的选项? Docs say you can, sort varName: "asc"sort varName: "desc" 由于某种原因,排序在控制器和域类上都不起作用。这是一个已知问题吗?每次我刷新时,顺序都会不断变化。

以上是关于在 Grails 控制器中对父子元素进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Grails 2.0 服务中对 i18n 注入 messageSource 的使用进行单元或集成测试

在 asp.net MVC 中对表进行排序

如何在 Play Framework 模板中对列表进行排序?

在一个视图表中对多个模型进行排序

无法在 Laravel 的双 foreach 循环中对数据进行排序

如何在SQL中对父记录中的记录进行排序