問題描述
我目前在我的 TYPO3 Ext 中有一個(gè)很大的條目列表,這導(dǎo)致站點(diǎn)加載時(shí)間很短,所以我想按字母順序拆分條目列表.為此,我使用 queryBuilder 僅選擇那些以 a、b、c 等開頭的條目.但是當(dāng)涉及到數(shù)字和特殊字符時(shí),我現(xiàn)在卡住了.我發(fā)現(xiàn)了這個(gè):MySQL - 如果它以數(shù)字開頭或特殊字符,這正是我所需要的.但我不知道如何在 queryBuilder 中創(chuàng)建 REGEXP.有人可以幫忙嗎?
I currently have a big list of entries in my TYPO3 Ext that causes the Site to have pretty poor loading times, so i want to split up the Entry list alphabetically. For that I'm using the queryBuilder to select only those entries, that start either with an a, b, c and so on. But im stuck now when it comes to numbers and special chars. I found this: MySQL - If It Starts With A Number Or Special Character which is exactly what I need. But I have no clue how to make an REGEXP in the queryBuilder. Can someone help?
TYPO3 版本為 10.4.6
TYPO3 version is 10.4.6
提前致謝
推薦答案
也許這樣的事情適合你:
Maybe something like this works for you:
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($tableName);
$result = $queryBuilder->select('*')
->from($tableName)
->where(
$queryBuilder->expr()->comparison(
$queryBuilder->quoteIdentifier($fieldName),
'NOT REGEXP',
$queryBuilder->createNamedParameter('^[[:alpha:]]')
)
)
->execute()
->fetchAll();
這會(huì)創(chuàng)建一個(gè)這樣的查詢(假設(shè) $tableName = 'foo'
和 $fieldName = 'baz'
):
This creates a query like this (assuming $tableName = 'foo'
and $fieldName = 'baz'
):
SELECT `foo`.*
FROM `foo`
WHERE `foo`.`baz` NOT REGEXP '^[[:alpha:]]'
參考:https://github.com/TYPO3/TYPO3.CMS/blob/10.4/typo3/sysext/core/Classes/Database/Query/Expression/ExpressionBuilder.php#L97-L100
這篇關(guān)于如何使用 TYPO3 queryBuilder 發(fā)出正則表達(dá)式請(qǐng)求的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!