Typo3 Extbase:如何按子对象的 属性 对父对象进行排序
Typo3 Extbase: How to sort parent objects by property of child objects
假设我有一个 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.
您可以使用 .
按子对象和属性排序,例如fooFieldWithObject.barField
.
对于你的情况,我会尝试:bars.barNum
class FooRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
protected $defaultOrderings = [
'bars.barNum' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
];
}
假设我有一个 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.
您可以使用 .
按子对象和属性排序,例如fooFieldWithObject.barField
.
对于你的情况,我会尝试:bars.barNum
class FooRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
protected $defaultOrderings = [
'bars.barNum' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
];
}