通过子对象排序元素

时间:2015-08-25 15:35:07

标签: typo3 fluid extbase

我有一个item对象与categories 1:n 关系。 让我们说类别是一个数值。

我尝试使用setOrderings()按类别对所有项目进行排序,但它不起作用。

//inside findAll() in my ItemRepository 
$query->setOrderings(array("item.categories" => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING));

如何根据子对象categories获取查询以对所有项目进行排序?

编辑:示例

Item1有类别[1,2,8],Item2有类别[1,2,5]所以升序排序顺序为:Item2,Item1

1 个答案:

答案 0 :(得分:2)

我想,

$query->setOrderings(array("item.categories" => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING));

这里'item.categories'是一个数组变量,这就是它无法正常工作的原因。

因此,您必须在每个项目的项目对象内创建一个新元素(例如:item.categorie)(您根据最大类别编号排序,'item.categorie'的值应该是此最大类别编号)。现在'item.categorie'将是一个普通变量,其值为5或8等...

然后,

$query->setOrderings(array("item.categorie" => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING));

会工作......