按Orm中的值对子项进行排序

时间:2015-12-28 15:12:49

标签: orm cfml lucee

我知道我可以在创建组件时设置特定的orderby属性,我可以将其添加到EntityLoad方法中。如果我不得不以某种方式对实体的孩子进行排序怎么办?

<cfset u = entityLoadByPk('user', 1)>
<cfset p = u.getPages()> <!-- sort by date? -->

谢谢!

1 个答案:

答案 0 :(得分:0)

在关系属性定义中使用strResult += '<td class="tips" title="' + issues.DEPARTMENT + '">' + issues.DEPARTMENT + '</td><td class="alias">' + issues.ALIAS_NAME + '</td>'; 属性:

orderBy

修改

以上将设置子实体的默认顺序。要允许其他排序选项,您可以使用component name="user" accessors=true persistent=true{ property name="pages" fieldType="one-to-many" cfc="Page" fkColumn="userID" orderBy="date"; }

在用户实体中创建页面排序方法
OrmExecuteQuery()

或者为了更简洁但不太正统的方法,尝试一个休眠过滤器:

array function pagesOrdered( string column="", string direction="ASC" ){
 //use an array to build up the HQL string
 var hql=[ "FROM Page WHERE User.ID = :userID" ];
 //only allow ordering on specified columns
 if( "title,viewcount,updated".ListFindNoCase( arguments.column ) ){
  hql.Append( "ORDER BY " & arguments.column );
 }
 if( arguments.direction IS NOT "ASC" ){
  hql.Append( "DESC" );
 }
 hql=hql.ToList( " " );
 return OrmExecuteQuery( hql, { userID: variables.ID } );
}