按特定值对子对象进行排序

问题描述

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

我当前的代码未对任何内容进行排序:

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

在调试中已经可以看到,$ child-> getvalidityPeriod()可以获取所需的整数信息。我认为,必须有一种方法可以根据其validationPeriod对该对象数组进行排序,但是我该如何管理呢?我需要创建一个新方法并在那里进行过滤吗?还是可以在ForEach循环之前使用某些方法?

伪像:

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

...and then for each...

如果有人能帮助我,那将太棒了!

解决方法

好几次尝试后,我都有一种解决方法,也可以用作答案;)

我在回购中编写了此方法:

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();
    }

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...