0

我有一个自定义扩展,您可以在其中选择后端的不同条目,以在列表视图中显示它们。我在后端有一个自定义排序,但系统总是按降序排序。

我实现了一个“orderBy”函数,它不起作用,因为系统使用了错误的退格键。

我的代码如下所示:

我在“findByUid($uid)”函数中调用排序函数,如下所示:

$query->setOrderings($this->orderByKey('uid', $uidArray));


protected function orderByKey($key, $uidlist) {
    $order = array();
    foreach ($uidlist as $uid) {
        //$order["$key=$uid"] = \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING;
        $order["$key=$uid"] = "ASC";
        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($order);
    }
    return $order;
}

sql查询的结果是:

ORDER BY `tx_MYEXTENSION_domain_model_FIELD`.`uid=3` DESC

但它必须是:

ORDER BY `tx_MYEXTENSION_domain_model_FIELD`.`uid` = 3 DESC

有没有办法改变这个?

4

1 回答 1

0

经过大量搜索,我在stackoverflow条目上找到了这个解决方案:

$ids = explode(',',$this->settings['entries'])
foreach($ids as $key => $id){
  $entries[$id] = $this->entriesRepository->findByUid($id);
}

此代码段必须在控制器中集成。对我来说它的工作。

于 2019-05-21T11:51:57.167 回答