ParamConverter:在Repository中注入curent用户

时间:2017-02-17 13:02:13

标签: symfony

在视图中,我想显示链接的值,但不能显示所有链接的值,因为它们取决于用户访问权限。

要做到这一点,我只需要使用 - > where(' user',$ user)进行leftJoin。问题是......如何从ParamConverter中将当前用户注入存储库?

1 个答案:

答案 0 :(得分:1)

假设你正在使用Doctrine,这应该可行;

在您的控制器中;

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

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

在你的回购文件中;

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();

}