Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all articles
Browse latest Browse all 1542

Doctrine: Subquery dans le FROM

$
0
0

Bonjour,

Voila je rencontre un petit problème avec une fonction que j'ai dans mon NumberRepository.

Ce que je veux

Je cherche à récupérer les derniers chiffres (number) en fonction de la référence. Par exemple si dans ma table numberj'ai ces données (j'ai juste mis les colonnes qui m'intéresse) :
Table number

Je veux récupérer :
Retour requêtes

Ce que je fais

J'ai dans un premier temps essayé de faire la requête avec le builder de doctrine :

$subquery = $entityManager->createQueryBuilder()
                         ->select(['n.ref', 'max(n.created_at) as max_date'])
                         ->from('number','n')
                         ->where('n.status = :status')
                         ->groupBy('n.ref');
$query = $entityManager->createQueryBuilder()
                      ->select('nb.*')
                      ->from('number', 'nb')
                      ->leftJoin('number', sprintf('(%s)', $subquery->getDQL()), 'no', 'nb.ref = no.ref')
                      ->setParameter('status', Number::STATUS_CONFIRMED);

J'obtiens cette erreur :

[Syntax Error] line 0, col 10: Error: Expected Doctrine\ORM\Query\Lexer::T_IDENTIFIER, got '*'

J'ai essayé de faire la manip sans le builder :

$query = $entityManager->createQuery("SELECT n.ref
                                   FROM (
                                          SELECT ref, MAX(created_at) as MaxTime
                                          FROM `number`
                                          WHERE status = 'confirmed'
                                          GROUP BY ref
                                    ) sn
                                    INNER JOIN `number` n
                                    ON sn.ref = n.ref AND n.created_at = sn.MaxTime")
                               ->setParameter('status', Number::STATUS_CONFIRMED);

Et cette fois ci j'ai une erreur :

[Semantical Error] line 0, col 13 near 'FROM (
': Error: Subquery is not supported here

Ca me parait assez abérant que Doctrine ne gère pas les subquery :'(

Avez-vous une idée de comment puis contourner ce problème?
Merci d'avance
A.


Viewing all articles
Browse latest Browse all 1542

Trending Articles