---
title: "QueryBuilder Select SUBSTRING()"
url: "https://www.typo3.net/d/128052-querybuilder-select-substring"
source: "typo3.net"
tags: ["Extensions","Frage","TYPO3 9"]
created: "2020-03-30"
last_reply: "2020-03-31"
replies: 1
solved: false
page: 1
pages: 1
lang: "de"
---

# QueryBuilder Select SUBSTRING()

Extensions · 1 Antwort · gestartet 2020-03-30

## Eröffnungsbeitrag

**bjoernmohr** · 2020-03-30 · [Beitrag #1](https://www.typo3.net/d/128052-querybuilder-select-substring/1)

Hallo Zusammen,

ich versuche die MYSQL Funktion Substring zu verwenden, hoffe auf einen Tipp was ich falsch mache.

Fehler: Call to undefined method TYPO3\CMS\Core\Database\Query\Expression\ExpressionBuilder::substring()

Wie folgt versuche ich die Abfrage in der Extension aufzurufen. Wenn ich die Zeile mit dem Substring auskommentiere funktioniert alles.

<?php
namespace xxxx\Pferdedatenbank\Controller;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
class App
{
function getPferdeListe()
{
        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_pferdedatenbank_domain_model_pferde');

$fields = array();
        $fields[] = 'tx_pferdedatenbank_domain_model_pferde.uid';
        $fields[] = 'tx_pferdedatenbank_domain_model_pferde.pferd_name AS b';

        // Hier ist der Wurm drin:
        $fields[] = $queryBuilder->expr()->substring('tx_pferdedatenbank_domain_model_pferde.pferd_name',0,1).' AS bb';

        $queryBuilder
            ->select(...$fields)
            ->from('tx_pferdedatenbank_domain_model_pferde')
            ->setMaxResults(100)
             ;
        $statement = $queryBuilder->execute();
        $all = array();
        while ($row = $statement->fetch())
        {
            $all[] = $row;
        }
        return $all;
}
}

## Antworten

### [#2](https://www.typo3.net/d/128052-querybuilder-select-substring/2) · Julian.​Hofmann · 2020-03-31

Hallo Björn.

Was suchst Du jetzt genau oder erwartest Du von uns als Lösung?
"Call to undefined method TYPO3\CMS\Core\Database\Query\Expression\ExpressionBuilder::substring()" sagt ja das Problem: Du rufst im ExpressionBuilder eine Methode auf, die es dort nicht gibt. Dein Code funktioniert natürlich dann, wenn Du genau jede Zeile, die die nicht-existente Methode aufruft, auskommentierst.

Was spricht dagegen, den Substring erst im Model zu behandeln? Den Pferd-Namen hast Du dort ja eh schon zur Verfügung, d.h. Du brauchsta us der Datenbank nicht gesondert auslesen.

Viele Grüße
Julian

---

Quelle: „QueryBuilder Select SUBSTRING()“, typo3.net, https://www.typo3.net/d/128052-querybuilder-select-substring
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
