Typo3 Extbase:如何通过子对象的属性对父对象进行排序

问题描述 投票:0回答:1

说我有一个extbase扩展名,其父对象“ foo”与子对象“ bar”的关系为m:n。每个“ bar”对象都有一个整数属性“ barNum”。我想对我的“ foo”对象进行排序,其中包含“ barNum”值最低的“ bar”对象。我该怎么办?

我可以按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。

typo3 extbase
1个回答
0
投票

您可以使用.按子对象和属性排序,例如fooFieldWithObject.barField

根据您的情况,我会尝试:bars.barNum

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

© www.soinside.com 2019 - 2024. All rights reserved.