Hallo,
ich habe mir eine Funktion erstellt (bzw. den Code irgendwo gefunden) mit der man nach Namen in einer Datenbak suchen kann. Funktioniert auch.
public function Search($keyword) {
$query = $this->createQuery();
$query->matching($query->like('name','%' . $keyword . '%'));
return $query->execute();
}
Aber wie erstelle ich eine einfache Abfrage wie folgende:
SELECT name FROM tabelle GROUP BY name
Gibt es irgendwo eine verständliche Übersicht der Möglichkeiten zur Datenbankabfragen?
marion-j schrieb
Gibt es irgendwo eine verständliche Übersicht der Möglichkeiten zur Datenbankabfragen?
http://lobacher.de/
-> Download: "NEU TYPO3 CMS Extbase & Fluid Cheatsheet"
Danke, aber wie ein GROUP BY eingebaut wird, habe ich nicht herausgefunden.
Mein Code:
public function testDb() {
$query = $this->createQuery();
$query->matching($query->name);
return $query->execute();
}
Folgendermaßen klappt es zwar, aber gibt es keine Möglichkeit GROUP BY im extbase query unterzubringen?
$query->statement("SELECT * from tabelle GROUP BY name");
und dann habe ich noch folgendes Problem, wenn ich anstatt * den Feldnamen 'name' einsetze, funktioniert es nicht! Dann wird mir der erste Name in der Tabelle so oft ausgegeben wie es Datensätze gibt. Und 'vorname' kann ich auch nicht abfragen, da gibt es nur leere Felder zurück.
$query->statement("SELECT name from tabelle GROUP BY name");
Kommt raus:
Mustermann
Mustermann
Mustermann
und wie kann ich vor Ausgabe der Daten (in List.html) die Daten noch manipulieren? Wenn ich zb. an jeden Namen etwas anhängen möchte...
$name = $name . " nur ein Test";
Das hier funktioniert auf jeden Fall:
public function testDb() {
$query = $this->createQuery();
$query->statement( "SELECT title, uid, pid from pages GROUP BY pid" );
$result = $query->execute(TRUE); ### returnRawQueryResult:TRUE (default:false)
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $result, '$result in testSql' );
die();
}
Achtung: aufpassen, daß dir nicht die diversen Caches dazwischen funken!
Vielen Dank jenses,
so funktioniert es :-)
Entscheidend ist anscheinend das TRUE im execute.