2017-01-10 3 views
0

Ich wurde mit dieser Stackoverflow als example:Symfony Lehre mit max in Wählbare Schnittstelle

der wie folgt aussieht:

$criteria = new \Doctrine\Common\Collections\Criteria(); 
$criteria->where($criteria->expr()->gt('prize', 200)); 

$result = $entityRepository->matching($criteria); 

würde Ich mag, um den max stattdessen wie folgt zu verwenden:

$criteria->where($criteria->expr()->max('prize')); 

aber erhalten:

Attempted to call an undefined method named "max" of class "Doctrine\Common\Collections\ExpressionBuilder". 

Irgendwelche Ideen?

+0

Was versuchst du zu tun? Wie Sie sehen, können Sie 'max' nicht als Ausdruck in der where-Klausel verwenden. Eventuell müssen Sie die SQL-Anweisung manuell mit einer Unterabfrage schreiben: http://StackOverflow.com/questions/1475589/SQL-Server-How-to-use-an-aggregate-function-like-max-in-a- -Where-Klausel – ClickLabs

Antwort

1

Es scheint, dass Sie tatsächlich nach der max() -Methode des Expression-Builders suchen, der dem Abfrage-Generator Doctrine\ORM\Query\Expr::max() zugeordnet ist.

Was Sie wirklich suchen ist:

$entityManager->createQueryBuilder()->expr()->max($x); 

$entityManager ist offensichtlich eine Instanz des Entity-Manager, der Sie durch DI oder dem Behälter erhalten werden.