2015-11-14 36 views

回答

3

因爲$user->getName()本身觸發查詢!如果您擺脫它並傳遞一個字符串值作爲名稱,例如'Name4',Doctrine會運行一個查詢。

另一件事,你已經似乎知道$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]); 
} 
-1

不,我用類型提示,我控制器(Symfony)是這樣的:

/** 
* @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 
    )); 
} 
+0

這是你應該做的:'@Route(「/ user/{name}」,name =「query_users」)''和'queryUsersAction($ name)'然後'findOneByName($ name)' – BentCoder

+0

Ooops !!!對不起!!我忘記了=( –

相關問題