按附加字段“日期”排序的条目
Posted
技术标签:
【中文标题】按附加字段“日期”排序的条目【英文标题】:sort of entries by the additional field "Date" 【发布时间】:2021-11-29 15:27:34 【问题描述】:如何按“date2”排序?也就是说,在附加字段“日期”上?
<#assign
orstf = objectUtil('com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil')
qry = assetEntryLocalService.dynamicQuery()
/>
<#if startDate??>
<#assign
V = qry.add(orstf.ge('publishDate', startDate?date("dd.MM.yyyy") ))
/>
</#if>
<#if endDate??>
<#assign
V = qry.add(orstf.le('publishDate', endDate?date("dd.MM.yyyy")))
/>
</#if>
<#assign
entriesRaw = assetEntryLocalService.dynamicQuery(qry)
entries = []
/>
<#-- ?sort_by(['name', 'last']) -->
<#list entriesRaw as entry>
<#assign
eCatIds = entry.getCategoryIds()
renderer = entry.getAssetRenderer()
journalArticle = renderer.getArticle()
date2 = journalArticle.getExpandoBridge().getAttribute("date")
bContains = 0
/>
<#list eCatIds as eCatId>
<#if (catIds?seq_contains(eCatId)) &&
(date2?date >= startDate?date("dd.MM.yyyy")) &&
(date2?date <= endDate?date("dd.MM.yyyy")) >
<#assign bContains = 1 />
</#if>
</#list>
<#if bContains == 1>
<#--
<#assign entry.set />
-->
<#assign entries = entries + [entry] />
</#if>
</#list>
我认为它可能会成功,将其写到资产的某个字段中。而在这种情况下。但是这样也不好,每次都拉数据库
【问题讨论】:
【参考方案1】:特别是在 FreeMarker 的 Netsuite 分支中,您不会这样做(假设您不能添加用 Java 编写的帮助程序),因为该分支甚至不支持 ?map
,它可以用于按计算归档,如date2
在这里。 (尽管如此,?sort_by
从 2.3.31 开始仅支持按单个字段排序,因此您必须做一些技巧,将两个字段连接为一个。即使 ?sort_by
稍后会在 FreeMarker 中得到改进,遗憾的是,这肯定不会进入 Netsuite 分支。)
无论如何,FreeMarker 中的假设是排序和其他此类查询操作(如连接等)是数据访问层的职责,而不是模板的职责。在这种情况下,肯定是 assetEntryLocalService.dynamicQuery
应该支持报告所需的任何排序。
【讨论】:
以上是关于按附加字段“日期”排序的条目的主要内容,如果未能解决你的问题,请参考以下文章
如何按 > 日期对一系列日期求和并将它们附加到熊猫新数据框中的新列?