首页 > 解决方案 > 通过学说将结果作为数组(水合物数组)获取时,如何获取关联实体?

问题描述

我正在使用学说从 mysql 数据库中获取数据:

$array = $this->em->getRepository(Documents::class)->findAll();

这是输出:

在此处输入图像描述

对于我的情况,我想直接获取一个数组,所以我创建了一个函数:

$array = $this->em->getRepository(Documents::class)->getArray();

存储库:

   public function getArray()
    {
      return   $this->getEntityManager()
               ->getRepository(Documents::class)
               ->createQueryBuilder('e')
               ->select('e')
               ->getQuery()
               ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
      }

数组已创建,但缺少一些字段:

在此处输入图像描述

我怎样才能获取页面和产品?我希望我的数据显示为日期+"timestamp": "02.12.2019"

标签: phparrayssymfonydoctrine

解决方案


忘记了需要其他设置的核心课程

只需使用getArrayResult()function 而不是getResult(). 它返回一个包含所有数据的数组

$query = $em->createQuery("SELECT test FROM namespaceTestBundle:Test test");
$tests = $query->getArrayResult();

Query#getResult():检索对象的集合。结果是对象的普通集合(纯)或对象嵌套在结果行中的数组(混合)。

Query#getArrayResult():检索一个数组图(嵌套数组),该数组图在很大程度上可以与 Query#getResult() 生成的对象图互换,用于只读目的。

我刚刚测试了将所有数据结果作为嵌套数组返回:

其他答案中的第二个解决方案也可以,但它们的工作方式不同:

另请参阅此答案https://stackoverflow.com/a/17499629/12232340和存储库

根据这个EntityRepository 类findAll不要接受多个参数。


推荐阅读