Questa è la mia funzione in cui sto cercando di mostrare la cronologia utente. Per questo ho bisogno di visualizzare i crediti correnti dell'utente insieme alla sua storia di credito.Come fare il join sinistro in Doctrine?
questo è quello che sto cercando di fare:
public function getHistory($users) {
$qb = $this->entityManager->createQueryBuilder();
$qb->select(array('a','u'))
->from('Credit\Entity\UserCreditHistory', 'a')
->leftJoin('User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id')
->where("a.user = $users ")
->orderBy('a.created_at', 'DESC');
$query = $qb->getQuery();
$results = $query->getResult();
return $results;
}
Tuttavia, ottengo questo errore:
[Syntax Error] line 0, col 98: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got 'ON'
Edit: ho sostituito 'ON' con 'CON' nel join clausola e ora quello che vedo è solo 1 valore dalla colonna unita.
Ho appena provato entrambi gli approcci con/senza relazione. , 1 ° per relazione come suggerisci di aver seguito il tuo codice, sto ricevendo il set di risultati. Ma non riesco a vedere il set di risultati aggiunti. per il secondo approccio voglio dire che sto ricevendo dati ma non era quello che stavo cercando esattamente –
La prima query ti dà l'oggetto 'UserCreditHistory' con l'oggetto' Utente' idratato in esso, dal momento che è un fetch- unisciti (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#joins) – Ocramius
Sì vero, è idratato quindi ho bisogno di loop through per ottenere il valore desiderato –