我正在尝试获取所有用户查询列表
$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;
}
但它显示相同
您可以尝试使用查询生成器。
$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);
现在你有一个包含所有记录的多维数组,你可以根据需要显示它们,就像$users[0]['username']一样获取它们。