Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

296
Vistas
Cómo hacer una solicitud de expresión regular con TYPO3 queryBuilder

Actualmente tengo una gran lista de entradas en mi TYPO3 Ext que hace que el sitio tenga tiempos de carga bastante bajos, por lo que quiero dividir la lista de entradas alfabéticamente. Para eso, estoy usando queryBuilder para seleccionar solo esas entradas, que comienzan con a, b, cy así sucesivamente. Pero estoy atascado ahora cuando se trata de números y caracteres especiales. Encontré esto: MySQL: si comienza con un número o un carácter especial , que es exactamente lo que necesito. Pero no tengo idea de cómo hacer un REGEXP en queryBuilder. ¿Alguien puede ayudar?

La versión de TYPO3 es 10.4.6

Gracias por adelantado

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Sugeriría usar LIKE para encontrar cadenas que comiencen con un carácter dado.

Usando ME GUSTA

 $firstCharacter = 'A'; $q = GeneralUtility::makeInstance(ConnectionPool::class) ->getQueryBuilderForTable('mytable'); $q->select('field') ->from('mytable') ->where( $q->expr()->orX( $q->expr()->like( 'field', $q->quote(strtolower($firstCharacter) . '%') ), $q->expr()->like( 'field', $q->quote(strtoupper($firstCharacter) . '%') );

Por supuesto, las mayúsculas y minúsculas podrían omitirse si el DBMS no distingue entre mayúsculas y minúsculas.

Uso de REGEXP

@eliashaeussler dio un buen ejemplo de eso.

Si bien LIKE es compatible con Doctrine dbal, REGEXP no lo es. Perdería la compatibilidad entre DBMS. Esto probablemente esté bien si se dirige a un sitio específico, pero, por supuesto, no debe usarse en extensiones públicas.

over 4 years ago · Santiago Trujillo Denunciar

0

Quizás te funcione algo como esto:

 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();

Esto crea una consulta como esta (suponiendo $tableName = 'foo' y $fieldName = 'baz' ):

 SELECT `foo`.* FROM `foo` WHERE `foo`.`baz` NOT REGEXP '^[[:alpha:]]'

Referencia: https://github.com/TYPO3/TYPO3.CMS/blob/10.4/typo3/sysext/core/Classes/Database/Query/Expression/ExpressionBuilder.php#L97-L100

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda