我有与一个一对多的关系连接的两个领域 - 一个用户可能有许多联想。 我想查看属于该用户的所有关联。 我使用的脚手架插件。 所以,代码应该返回协会AssociationController的列表如下LILE这样的:
def index(Integer max) {
respond Association.list(params), model:[associationInstanceCount: Association.count()]
}
并且用户视图页面上,我有以下代码:
<g:form controller="Association" >
<fieldset class="buttons">
<g:hiddenField name="user.id" id="user.id" value="${userInstance.id}"/>
<g:actionSubmit class="list" action="index" value="${message(code: 'default.list.label', default: 'Show Associations')}"/>
</fieldset>
</g:form>
当我按下这个actionSubmit可以user.id
与请求一起发送,这是内PARAMS地图(我与调试检查的话),但由于某种原因Association.list(params)
尽管我返回所有协会(对所有用户)中号使用PARAMS内此user.id。 A也试图重命名user.id
只是user
,它也不能工作。 看起来这.LIST()应只用于排序或我做错了什么。 你能不能帮我这个好吗? 谢谢!
澄清给出答案: list( params )
返回所有结果域对象,并且只接受排序(按顺序),并查看端口(限制/偏移)参数。 它不提供任何where
条款(当然,除了discriminator
-column)
更新:
您可以使用findAllBy*
:
Association.findAllByUserId( params.long( 'user.id' ), params )
或criteria
,如果你需要让你的查询更复杂:
Association.withCriteria{
eq 'id', params.long( 'user.id' )
maxResults params.int( 'max' ) ?: 10
firstResult params.int( 'offset' ) ?: 0
if( params.sort && params.order ) order params.sort, params.order
}
据Grails的文档 ,列表不会采取id作为参数。
看到你的最大,这将是Association.list(max: max)
和你想要的东西,它是这样的:
Association.findAllByUserId(params.id, [max: max])
凡params.id
包含id
想要的用户(或params['user.id']
更多关于findAllBy ...
不知道以前的响应,但是:
Association.where {
user {
eq 'id', params['user.id']
}
} .list()
您可以添加PARAMS如果使用分页列出调用。
另一种解决方案:
def index(User user) {
respond user.associations, , model:[associationInstanceCount: user.associations.size()]
}
但是,你必须命名PARAM“ID”这主要取决于你如何设计你的域对象,在这里什么是你的目标。