TYPO3 创建查询

TYPO3 create query

我正在尝试使用 TYPO3 创建一个简单的查询。我正在尝试从名称以数值开头的 table 中检索所有结果,然后对它们进行排序。不幸的是,创建 $statement 变量不起作用。如何使用 TYPO3 类型的查询($query->matching$query->like)执行此操作。谢谢您的回答。

更新:

TYPO3 版本:8.7.3
我尝试了什么:

public function sortReferencesNumerically(){
    $query = $this->createQuery();
    $statement = 'select * from tx_referencemanager_domain_model_reference WHERE name REGEXP '^[0-9]' ORDER BY CAST(name as SIGNED INTEGER) ASC';
    $query->statement($statement);
    return $query->execute();
}

NewUpdate : 不幸的是我不能使用 $statement 方法,即使它很有效。如果没有查询->语句方法,有没有办法做到这一点? 我试过这个,但它只显示 table 中以数字字符开头的第一个数据,即使我有 20-30 也很难。

 array_push($queryConstraints, $query->logicalOr([
                    $query->like('name', '0%'),
                    $query->like('name', '1%'),
                    $query->like('name', '2%'),
                    $query->like('name', '3%'),
                    $query->like('name', '4%'),
                    $query->like('name', '5%'),
                    $query->like('name', '6%'),
                    $query->like('name', '7%'),
                    $query->like('name', '8%'),
                    $query->like('name', '9%'),
                ]));

你的琴弦断了。如果将字符串封装在单引号中,请不要使用单引号来分隔正则表达式。

这应该有效:

public function sortReferencesNumerically(){
    $query = $this->createQuery();
    $statement = 'select * from tx_referencemanager_domain_model_reference WHERE name REGEXP \'^[0-9]\' ORDER BY CAST(name as SIGNED INTEGER) ASC';
    $query->statement($statement);
    return $query->execute();
}