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 number
j'ai ces données (j'ai juste mis les colonnes qui m'intéresse) :
Je veux récupérer :
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.