Schön, wusste noch nicht einmal von getOneOrNullResult, aber das ist ziemlich hilfreich!
– Aaron Lozier
24. Juli 2014 um 23:50 Uhr
Wenn Sie Ergebnis in einem Array wollen: ->getOneOrNullResult(Query::HYDRATE_ARRAY)
– Omar Tarik
12. Dezember 2018 um 12:32 Uhr
Beide getSingleResult() und getOneOrNullResult() löst eine Ausnahme aus, wenn es mehr als ein Ergebnis gibt. Um dieses Problem zu beheben, könnten Sie hinzufügen setMaxResults(1) zu Ihrem Abfragegenerator.
Für alle, die versuchen, zu verwenden SetMaxResults(1) bei einer NativeQuery wird diese Methode nicht unterstützt docs für Version 2.3.
– Tomás Kinderbett
28. Juni 2017 um 17:44 Uhr
Eine Sorge, die ich für diese Lösung habe – wenn Sie beide behaupten, dass es 0 oder 1 Ergebnisse geben sollte, aber dann die Ausnahme schlucken (via setMaxResults(1)), was dazu führen sollte, dass diese Behauptung falsch ist, verbergen Sie möglicherweise ein heimtückischeres Problem mit Ihrem Datenmodell oder Ihrer Anwendung. Nur zur Info.
– MSC
13. November 2017 um 17:14 Uhr
Wenn Sie Ergebnis in einem Array wollen: ->getOneOrNullResult(Query::HYDRATE_ARRAY)
– Omar Tarik
12. Dezember 2018 um 12:32 Uhr
Hier nur ein entscheidender Unterschied. Für diejenigen, die verwirrt sind, welche sie verwenden sollen: getSingleResult() vs getOneOrNullResult(). getSingleResult() wirft einen Fehler, wenn keine Zeilen gefunden werden. aber für getOneOrNullResult() es wird ein Nullwert zurückgegeben!
– ezennnn
gestern
->getSingleScalarResult() gibt einen einzelnen Wert anstelle eines Arrays zurück.
Das ist, wonach ich für meine Abfrage SELECT MIN (Datum) … gesucht habe. Gibt das Datum ohne Array zurück. Vielen Dank.
– Strabek
12. Februar 2017 um 6:39 Uhr
Ich will nur ein Ergebnis
impliziert, dass Sie erwarten, dass nur eine Zeile zurückgegeben wird. Passen Sie also entweder Ihre Abfrage an, z
SELECT player_id
FROM players p
WHERE CONCAT(p.first_name, ' ', p.last_name) = ?
LIMIT 0, 1
(und dann verwenden getSingleResult() wie von AdrienBrault empfohlen) oder Zeilen als Array abrufen und auf das erste Element zugreifen:
Ich benutze fetchObject() hier ein kleines Beispiel mit Symfony 4.4
<?php
use Doctrine\DBAL\Driver\Connection;
class MyController{
public function index($username){
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder
->select('id', 'name')
->from('app_user')
->where('name = ?')
->setParameter(0, $username)
->setMaxResults(1);
$stmUser = $queryBuilder->execute();
dump($stmUser->fetchObject());
//get_class_methods($stmUser) -> to see all methods
}
}