TYPO3 extbase查询中的SQL FIELD

时间:2018-11-14 09:24:25

标签: mysql sql typo3 extbase

如何编写SQL查询

SELECT * 
FROM tx_test_domain_model_icon 
WHERE uid IN (24,42,23,25,26,31,40,41,54)
ORDER BY FIELD(uid, 24,42,23,25,26,31,40,41,54)

在Extbase代码中?

我的IconRepository中有

    $query = $this->createQuery();

    $and = [
        $query->in('uid', $serviceIconIds),           
        $query->setOrderings($this->orderByKey('uid', $uidList))
    ];
    $query->matching($query->logicalAnd($and));

    $result = $query->execute();

但是我该如何设置顺序?

解决方案 这对我有用

$query->setOrderings($this->orderByUid('uid', $serviceIconIds));

    $result = $query->execute();
}
protected function orderByUid($key, $uidlist)
{
    $order = array();
    foreach ($uidlist as $uid) {
        $order["$key={$uid}"] = QueryInterface::ORDER_DESCENDING;
    }
    return $order;
}

0 个答案:

没有答案