Symfony 当我使用findOneByProperty()方法时,为什么要创建两个查询?
我对教义2很好奇。当我使用Symfony 当我使用findOneByProperty()方法时,为什么要创建两个查询?,symfony,doctrine-orm,Symfony,Doctrine Orm,我对教义2很好奇。当我使用findOneByProperty(\uu调用)时,为什么要创建两个查询 Symfony web profiler说有2个查询到bd,为什么会发生 谢谢,因为$user->getName()本身会触发一个查询!如果您去掉它并将字符串值作为名称传递,例如“Name4”,则条令将运行单个查询 另一件事是,您似乎已经知道$user对象,那么为什么还要运行另一个查询来再次获取相同的对象呢 更新: 从技术上讲,这就是你正在做的: public function indexAc
findOneByProperty(\uu调用)
时,为什么要创建两个查询
Symfony web profiler说有2个查询到bd,为什么会发生
谢谢,因为
$user->getName()
本身会触发一个查询!如果您去掉它并将字符串值作为名称传递,例如“Name4”,则条令将运行单个查询
另一件事是,您似乎已经知道$user
对象,那么为什么还要运行另一个查询来再次获取相同的对象呢
更新:
从技术上讲,这就是你正在做的:
public function indexAction()
{
$result1 = $this->userRepository->findOneByName('Name4');
$result2 = $this->userRepository->findOneByName($result1->getName());
return $this->getTemplate(['result' => $result2]);
}
但你应该这样做:
public function indexAction()
{
$result1 = $this->userRepository->findOneByName('Name4');
return $this->getTemplate(['result' => $result1]);
}
不,我使用类型提示,我的控制器(Symfony)是:
这是您应该做的:
@Route(“/user/{name}”,name=“query\u users”)
和queryUsersAction($name)
然后findOneByName($name)
public function indexAction()
{
$result1 = $this->userRepository->findOneByName('Name4');
return $this->getTemplate(['result' => $result1]);
}
/**
* @Route("/user-{name}", name="queryUsers")
*/
public function queryUsersAction(User $user)
{
$user = $this->getDoctrine()->getRepository('AppBundle:User')
->findOneByName($user->getName());
return $this->render('query/query-by-property.html.twig', array(
'user' => $user
));
}