(Symfony)Doctrine ORM findAll:信息过多

时间:2017-01-23 09:33:39

标签: php symfony doctrine-orm

我想知道是否可以修改$this->getDoctrine()->getRepository('AppBundle:Foo')->findAll(),以便我只获取相关实体的 ID 。因为Foo与“一个用户”和“多个组”相关,所以我总是在结果中得到“整个用户对象”和“所有组对象”,这使得结果非常不清楚。那么,是否可以只打印相关对象的ID?

我希望有人可以帮助我。谢谢!

2 个答案:

答案 0 :(得分:5)

您不必检索完整实体,也可以只选择所需的字段。您将获得一个普通数组列表,而不是实体列表,其中每个数组都包含所选字段。

$ids = $em->createQueryBuilder() // $em is your entity manager
    ->select("foo.id")
    ->from("AppBundle:Foo", "foo")
    ->getQuery()->getResult();

$ids = array_map("current", $ids);

注意:最后一行是可选的,当您只选择一个字段时,它会“展平”您的数组。

答案 1 :(得分:-1)

您必须编写自己的自定义查询:

$query = $this->getDoctrine()->getManager()->createNativeQuery('SELECT id FROM foo'); 
$foos= $query->getResult();

以上应该有效 有关详细信息,请参阅此处http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html