Typo3 Extbase: как отсортировать родительские объекты по свойству дочерних объектов - PullRequest
0 голосов
/ 11 января 2020

Скажем, у меня есть расширение extbase с родительскими объектами "foo" с отношением m: n к дочерним объектам "bar". Каждый объект "bar" имеет целочисленное свойство "barNum". Я хочу отсортировать мои объекты "foo", по которым каждый содержит объект "bar" с самым низким значением "barNum". Как я могу это сделать?

Я могу сортировать по полям объекта foo, например:

class FooRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
    protected $defaultOrderings = [
        'fooField' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
    ];
    }

Но я не вижу способа сортировки по полю m: n связанный дочерний объект


Чтобы уточнить: например, если мои данные выглядят так:

"foos": {
    "foo1": {
        "bars": {
            "bar1": {
                "barNum": 31
            },
            "bar2": {
                "barNum": 42
            }
        }
    },
    "foo2": {
        "bars": {
            "bar3": {
                "barNum": 82
            },
            "bar4": {
                "barNum": 19
            }
        }
    },
    "foo3": {
        "bars": {
            "bar5": {
                "barNum": 37
            }
        }
    }
}

Я бы хотел отсортировать их foo2, foo1, foo3 потому что 19 <31 <37. </p>

1 Ответ

1 голос
/ 11 января 2020

Вы можете сортировать по подобъектам и свойствам, используя ., например, fooFieldWithObject.barField.

В вашем случае я бы попробовал: bars.barNum

class FooRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
    protected $defaultOrderings = [
        'bars.barNum' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
    ];
}

...