如何根据优先级输入对对象列表进行排序

时间:2020-04-29 10:50:24

标签: php sql symfony columnsorting pimcore

问题:我需要通过3个不同的标准对名为“锦标赛”的对象列表进行排序。

  1. 名为start(timestamp)的字段
  2. 称为game__id的字段
  3. 称为platform__id
  4. 的字段

不。 3.是有问题的,因为CMS(pimcore)内容管理器需要以下顺序:Ps4-> Xbox-> PC,但是pimcore数据库是自动生成的,并且您不知道平台的ID,因此您不能始终依赖Ps4是第一个,等等。

部分解决方案:

在对象平台中创建一个字段“优先级”,内容团队可以通过该字段进入每个字段,然后选择1、2、3、4等。

对这些优先级字段(uasort)进行排序,然后根据平台的优先级显示比赛(Ps4-> Xbox-> PC,或者如果需要的话,反之亦然)。

代码:

$tournamentList = new Tournament\Listing();
    $tournamentList->setCondition("start >= unix_timestamp(NOW() - INTERVAL 1 DAY)");    // fetch only not finished
    $tournamentList->setOrder('ASC');

    $platformList->getObjects();
    $platformObject = $platformList->objects;
    uasort($platformObject, function($a, $b) {
        if ($a->getPriority() == $b->getPriority()) {
            return 0;
        }
        return ($a->getPriority() > $b->getPriority()) ? +1 : -1;
    });

    foreach ($platformObject as $platform) {
        $priority = $platform->getPriority();
    }

    $tournamentList->setOrderKey([
        "start",
        "game__id",
    ]);

这是我遇到的问题,是的,我过滤了输入内容,现在有1、2、3,但是如何根据平台和优先级对比赛进行排序?!

0 个答案:

没有答案