【问题标题】:Typo3 Extbase: How to sort parent objects by property of child objectsTypo3 Extbase:如何按子对象的属性对父对象进行排序
【发布时间】:2020-01-10 22:47:49
【问题描述】:

假设我有一个 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

【问题讨论】:

    标签: typo3 extbase


    【解决方案1】:

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

    在你的情况下,我会尝试:bars.barNum

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

    【讨论】:

    • 谢谢这对我有用。所以我想当它通过 ORDER_ASCENDING 排序时,它会自动使用每个对象可用的最低子对象属性值。假设,如果有人想通过最高子对象值升序排序怎么办?所以在上面的例子中,foo3, foo1, foo2, since 37
    猜你喜欢
    • 2014-11-06
    • 2016-02-08
    • 2018-03-06
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2018-07-02
    相关资源
    最近更新 更多