如何获取当前用户的 ID 以在 dql 语句中使用它?
How can i get current user's id to use it in a dql statement?
我知道很多人问过这个问题,但甚至没有人回答:
This reponse。
对于如何将当前用户的 ID 放入存储库中的 dql 语句,这不是一个很好的回应。
我看到很多人在谈论它不符合逻辑或者这是一个糟糕的选择,那么将当前用户的 id 像参数一样用于 dql 语句或 QueryBuilder 中的好方法是什么,而这就是我所做的但不起作用:
我的控制器:
public function GetGroupsByStudentAction()
{
$em=$this->getDoctrine()->getManager();
$modeles=$em->getRepository("AcmeMyBundle:GroupMatiere")
->findGroupByStudent();
return($this->render("AcmeMyBundle:GroupMatiere:list.html.twig",array("modeles"=>$modeles)));
}
public function ConnectedUserIdAction()
{ $user = $this->container->get('security.token_bag')->getToken()->getUser();
return $user->getId();
}
我的服务:
<service id="serviceGroupe" class="Acme\MyBundle\Controller\GroupMatiereController"/>
我的存储库:
public function findGroupByStudent()
{
// $currentid = i dont know how i call the methode from the service;
$query=$this->getEntityManager()
->createQuery("SELECT m from AcmeMyBundle:GroupMatiere m WHERE m.idGroupe=?1")
->setParameter(1, $currentid);
return $query->getResult();
}
如果我选择 $currentid=1 就可以了;但我需要连接的用户 ID。
Thanks For Help and any other suggestion to change the logic i will be happy !
像这样定义您的存储库方法:
public function findGroupByStudent($student)
{
$query=$this->getEntityManager()
->createQuery("SELECT m from AcmeMyBundle:GroupMatiere m WHERE m.idGroupe=?1")
->setParameter(1, $student->getId());
return $query->getResult();
}
然后在控制器中传递属于当前登录用户的 Student 实体,例如:
$modeles=$em->getRepository("AcmeMyBundle:GroupMatiere")
->findGroupByStudent($this->getUser()->getStudent());
我知道很多人问过这个问题,但甚至没有人回答: This reponse。 对于如何将当前用户的 ID 放入存储库中的 dql 语句,这不是一个很好的回应。 我看到很多人在谈论它不符合逻辑或者这是一个糟糕的选择,那么将当前用户的 id 像参数一样用于 dql 语句或 QueryBuilder 中的好方法是什么,而这就是我所做的但不起作用:
我的控制器:
public function GetGroupsByStudentAction()
{
$em=$this->getDoctrine()->getManager();
$modeles=$em->getRepository("AcmeMyBundle:GroupMatiere")
->findGroupByStudent();
return($this->render("AcmeMyBundle:GroupMatiere:list.html.twig",array("modeles"=>$modeles)));
}
public function ConnectedUserIdAction()
{ $user = $this->container->get('security.token_bag')->getToken()->getUser();
return $user->getId();
}
我的服务:
<service id="serviceGroupe" class="Acme\MyBundle\Controller\GroupMatiereController"/>
我的存储库:
public function findGroupByStudent()
{
// $currentid = i dont know how i call the methode from the service;
$query=$this->getEntityManager()
->createQuery("SELECT m from AcmeMyBundle:GroupMatiere m WHERE m.idGroupe=?1")
->setParameter(1, $currentid);
return $query->getResult();
}
如果我选择 $currentid=1 就可以了;但我需要连接的用户 ID。
Thanks For Help and any other suggestion to change the logic i will be happy !
像这样定义您的存储库方法:
public function findGroupByStudent($student)
{
$query=$this->getEntityManager()
->createQuery("SELECT m from AcmeMyBundle:GroupMatiere m WHERE m.idGroupe=?1")
->setParameter(1, $student->getId());
return $query->getResult();
}
然后在控制器中传递属于当前登录用户的 Student 实体,例如:
$modeles=$em->getRepository("AcmeMyBundle:GroupMatiere")
->findGroupByStudent($this->getUser()->getStudent());