我正在使用ezpublish搜索api获取 session
内容类型对象按其父对象的 training
字段(字段名为 code
).
因此,如果我有两个会话s1(链接到代码t1的训练)和s2(链接到代码t2的训练),我希望在列表中的s2之前列出会话s1。
$criterions = array (
new Criterion\ContentTypeIdentifier( 'session' )
);
$locationQuery = new LocationQuery();
$locationQuery->query = $criteriaArray;
$locationQuery->sortClauses = array(
//new SortClause\Field('session','price'),<- this works
new SortClause\Field('training','code',Query::SORT_ASC)
//this second sorClause does not work as code is not a field of session while price is
);
使用本机mysql查询可能有解决这个问题的方法,但是它不可移植,并且一些id将被硬编码。
我的问题是我们能不能达成一种 sesssions
根据他们父母的说法 training'
代码`field?
2条答案
按热度按时间woobm2wo1#
多亏了@edi和我的一位同事,我才得以成功。
要创建的两个类是:field类:
处理程序类:
将处理程序声明为服务:
为了把这些碎片放在一起,我做了这样一件事:
igetnqfo2#
不幸的是,对于内置的sort子句,这是不可能的。
你所能做的就是按
code
字段,然后分别为每个培训加载其会话。当然,如果您的数据库中有许多内容对象,这将是不高效的。另一种可能是实现一个定制的sort子句。