【问题标题】:Grails searchable relationshipGrails 可搜索的关系
【发布时间】:2012-12-21 21:45:38
【问题描述】:

我想知道如何返回可搜索的特定域? 例如,我们有域 A 和 B。两个域都是可搜索的并且有关系:A 有很多 B,B 属于 A。另一种情况 A 和 B 有多对多的关系。

现在当我搜索 item 时,我必须总是返回 A item。就我而言,假设我在 B 中找到了匹配项,我需要为每个 B 返回所有 As。其他方式也应该有效。

目前我做的搜索查询是可搜索服务:

def searchResults = searchableService.search(params.q, params)

有没有办法为任何搜索结果获取所有相关的 A 域?

谢谢。

【问题讨论】:

    标签: grails searchable


    【解决方案1】:

    使您的域(A 和 B)都可搜索,然后在可搜索的属性中添加 DomainObject component:true

    class A{
      String name
    
      static hasMany = [bclass: B]
      static searchable = {
         bclass component: true
      }
    }
    
    class B{
      String color
    
      static belongsTo= [aclass: A]
      static searchable = true
    }
    

    假设在B中有一些行的color字段值为'red'

    A.search("red") 
    

    将返回 A 的所有实例,其子类 Bcolor 字段值为“红色”

    【讨论】:

    • 我正在使用另一个域来链接 A & B - C 作为链接表。你能给我举个例子,其中包括链接表吗?
    • 只需使用相同的方法并使用 domain.search(...) 进行搜索。就像上面的例子 A.search(params.q,params) 将匹配来自域 A 和 B 的字符串,并且即使字符串在 B 域中匹配也会以 A 的形式给出输出。
    • 你能举个例子吗?我将不胜感激。谢谢。
    • 只有当您有 2 个域时,您的答案才有效。我有 3 个域: A > C B 其中 C 仅包含链接 ID。如果没有直接链接,我如何制作 A 的 B 组件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2011-05-02
    • 2011-01-28
    相关资源
    最近更新 更多