2015-08-25 10 views
4

У меня есть объект item с 1: n отношение к categories. Допустим, что категории - это числовое значение.Элементы сортировки через дочерние объекты

Я попытался отсортировать все элементы по категориям с помощью setOrderings(), но это не сработает.

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

Как я могу получить мой запрос, чтобы сортировать все элементы в соответствии с их дочерними объектами categories?

EDIT: Пример

Элемент1 имеет категории [1,2,8], Элемент2 имеет категории [1,2,5] поэтому порядок сортировки по возрастанию будет: ITEM2, ITEM1

+0

ли вы имеете в виду Есть несколько категорий для каждый элемент? Вы сортируете элементы по количеству категорий или по максимальной категории или что-то еще? – approxiblue

+0

Да, каждый элемент имеет несколько категорий. Каждая категория - это число (int). Я хочу сортировать элементы в соответствии с их номерами категорий. Так, например, Item1 имеет категории [1,2,8], Item2 имеет категории [1,2,5], поэтому порядок сортировки по возрастанию будет: Item2, Item1 – d4ny3l

+0

Итак, вы сортируете по номеру максимальной категории? Вы должны отредактировать свой вопрос и добавить эти примеры. – approxiblue

ответ

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)); 

будет работать ...

+0

будет «работать», но это не то, что я ищу. Добавление дополнительного свойства сортировки невозможно. Я добавлю функцию сортировки в my ext, которая анализирует хранилище объектов и создает отсортированный массив, который затем используется для создания правильного вывода. – d4ny3l

Смежные вопросы