Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 当我使用findOneByProperty()方法时,为什么要创建两个查询?_Symfony_Doctrine Orm - Fatal编程技术网

Symfony 当我使用findOneByProperty()方法时,为什么要创建两个查询?

Symfony 当我使用findOneByProperty()方法时,为什么要创建两个查询?,symfony,doctrine-orm,Symfony,Doctrine Orm,我对教义2很好奇。当我使用findOneByProperty(\uu调用)时,为什么要创建两个查询 Symfony web profiler说有2个查询到bd,为什么会发生 谢谢,因为$user->getName()本身会触发一个查询!如果您去掉它并将字符串值作为名称传递,例如“Name4”,则条令将运行单个查询 另一件事是,您似乎已经知道$user对象,那么为什么还要运行另一个查询来再次获取相同的对象呢 更新: 从技术上讲,这就是你正在做的: public function indexAc

我对教义2很好奇。当我使用
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
   ));
}