(Symfony)教条ORM findAll:信息太多



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

我希望有人能帮助我。谢谢!

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

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

注意:最后一行是可选的,当你只选择一个字段时,它会"压平"你的数组。

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

$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

最新更新