按特定值对子对象排序

Sort Childobjects by specific value

我目前正在尝试根据有效时间对我可以获得的所有子对象进行排序。

我当前的代码没有对任何东西进行排序:

$children = $this->productRepository->findByParent($product->getNumber());
        
        
foreach ($children as $child) {
    //debug::debug($child->getvalidityPeriod());
    $product->addChild($child);
}

正如在调试中看到的那样,$child->getvalidityPeriod() 用于获取所需的整数信息。我想,一定有一种方法可以按 validityPeriod 对这个对象数组进行排序,但我该如何管理呢?我是否需要创建一个新方法并在那里过滤它,或者我可以在 ForEach 循环之前使用一些东西吗?

伪喜欢:

$children = $this->productRepository->findByParent($product->getNumber());
ObjectSortFunction($children, 'getvalidityPeriod');

...and then for each...

如果有人能帮助我就太好了!

好吧,经过几次尝试,我有了一个解决方法,它也可以用作答案;)

我在我的 repo 中写了这个方法:

public function findByParentSorted($parentId)
    {
        $query = $this->createQuery();
        $query->matching($query->equals('parent', $parentId));
        $query->setOrderings(
            [
                'validity_period' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
            ]
        );

        return $query->execute();
    }