2017-04-01 3 views
1

ich zur Zeit dieser Abfrage verwenden und es funktioniert:Wie (besser) wählen mit AS in Lehre der Query Builder

$qb = $this->getEntityManager()->createQueryBuilder(); 
$qb 
    ->select('u') 
    ->addSelect('SUM(l.corrects) AS score') 
    ->from(User::class, 'u') 
    ->leftJoin('u.learned', 'l') 
    ->groupBy('u.id') 
    ->orderBy('score', 'desc') 
    ; 

return $qb->getQuery()->getResult(); 

Aber in Zweig habe ich {{ user['score'] }} & {{ user[0].username }} verwenden ... Was kann ich tun dass ich {{ user.score }} & {{ user.username }} in Zweig verwenden kann?

+0

Sie verwenden können sie nicht, zumindest nicht ohne Arbeit. Das Problem ist, dass die Anweisung groupBy ein einfaches Array zurückgibt und nicht magisch mit assoziierten Entitäten verknüpft ist. Wenn Sie Ihr Abfrageergebnis ausgeben, kann es klarer sein. – ehymel

Antwort

0

Was ist, wenn Sie das in Ihrer Benutzereinheit tun?

// User.php 

public function getScore() 
{ 
    $score = 0; 
    foreach($this->learned as $learned) { 
     $score += $learned->getCorrects(); 
    } 

    return $score; 
} 

Sie werden alble {{ user.score }}

+0

Weil es n + 1 Abfragen statt nur einer benötigt, oder? – Travis