2017-07-28 43 views
-2

我試圖讓所有的列表的用戶查詢如何獲取orm symfony中的所有內容?

$userList = [1,5,2,3,1]; 
$users = $this->getEntityManager()->getRepository('AppBundle:User')->findBy(['id' => $userList]); 

此代碼工作,但它獨特的用戶。它顯示像這樣

--------------- 
userid | name 
--------------- 
1  | we 
5  | ace 
2  | red 
3  | ran 

,但我要顯示這樣一個

--------------- 
userid | name 
--------------- 
1  | we 
5  | ace 
2  | red 
3  | ran 
1  | we 

我如何能做到這一點的ORM?

更新

我嘗試這一個。

public function getUsers($id) 
    { 
     $query = $this->createQueryBuilder('u') 
      ->addSelect('u') 
      ->distinct(false) 
      ->where('u.id IN (:ulist)') 
      ->setParameter('ulist', $id) 
      ->getQuery(); 
     $users = $query->getResult(Query::HYDRATE_ARRAY); 

     return $users; 
    } 

,但它顯示相同的

回答

0

試試這個:

$users = $this->getDoctrine()->getRepository('AppBundle:User')->findById([1,2,3,4,5,6, 12,10]); 
dump($users); 
exit; 

您還可以看到here

+0

我得到了相同的結果 – user3818576

1

您可以使用查詢生成器嘗試。

$repository = $this->getDoctrine()->getRepository('AppBundle:User'); 
$query = $repository->createQueryBuilder('u') 
->select('u') 
->where('u.id IN (:ulist)') 
->setParameter('ulist', $userList) 
->getQuery(); 
$users = $query->getResult(); 

如果這仍然讓你獨特的成果試試這個

$repository = $this->getDoctrine()->getRepository('AppBundle:User'); 
$query = $repository->createQueryBuilder('u') 
->select('u') 
->distinct(false) 
->where('u.id IN (:ulist)') 
->setParameter('ulist', $userList) 
->getQuery(); 
$users = $query->getResult(); 

否則,你就必須創建對象的數組。您可以通過使用

$users = $query->getResult(Query:HYDRATE_ARRAY); 

現在你有所有的記錄多維數組替換最後一行做到這一點,你可以顯示他們儘可能多的希望,只要你想只取他們喜歡$用戶[0] ['用戶名']例如

+0

我得到了同樣的結果。它不同。我將getDoctrine()函數更改爲getEntityManager()。這在我的代碼中會起作用嗎? – user3818576

+0

我將getDoctrine()函數更改爲getEntityManager(),因爲在我的用戶存儲庫中找不到getDoctrine() – user3818576

+0

您是否在控制器中?如果你在控制器中,這個代碼是完全有效的,至少在symfony 3+中。你甚至嘗試過第二個查詢? –

相關問題