2017-02-17 1 views
0

In einer Ansicht möchte ich verknüpfte Werte anzeigen, aber alle verknüpften Werte können nicht angezeigt werden, da sie vom Benutzerzugriff abhängig sind.ParamConverter: aktuellen Benutzer in Repository injizieren

Um das zu tun, ich muss nur mit einem ein leftJoin tun -> where ('user', $ user). Die Frage ist ... wie kann ich den aktuellen Benutzer aus dem ParamConverter in das Repository injizieren?

+0

Wird der Benutzerzugriff über das Symfony-Rollensystem ausgeführt? – Rooneyl

+0

http://stackoverflow.com/q/8153103/1220930 – Timurib

+0

Ja, er kann auf die Ansicht zugreifen, aber in der Ansicht listet ich andere Objekte auf, und ich möchte nur Objekte auflisten, auf die er zugreifen kann. Um dies zu tun, muss ich eine Abfrage ausführen, wo ich den aktuellen Benutzer angeben, um Ergebnisse zu filtern. – mpiot

Antwort

1

Angenommen, Sie Lehre verwenden, sollte diese Arbeit;

In Ihrem Controller;

$objRepo = $this->getDoctrine()->getManager()->getRepository('AppBundle:Objects'); 

$files = $this->objRepo->getAllForUserId($this->getUser()->getId()); 

Und in Ihrer Repo-Datei;

public function getAllForUserId($user_id, $limit=100) 
{ 
    if (null === $user_id) { 
     throw new ORMInvalidArgumentException('User id not set'); 
    } 

    $queryBuilder = $this->createQueryBuilder('obj'); 

    $queryBuilder->select(array('obj', 'usr')) 
     ->innerJoin('obj.users', 'usr') 
     ->where('usr.id = :user_id') 
     ->setParameter(':user_id', $user_id) 
     ->orderBy('file.created', Criteria::DESC); 

    $query = $queryBuilder->getQuery(); 

    return $query->getResult(); 

} 
Verwandte Themen