繁体   English   中英

通过学说将结果作为数组(水合物数组)获取时,如何获取关联实体?

[英]How can I fetch associated entities when fetching results as an array (hydrate array) via doctrine?

我正在使用学说从 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"

忘记了需要另一个设置的核心类

只需使用getArrayResult()函数而不是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不接受多个参数。

您需要通过将其添加到选择中来执行“获取连接”:

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

更多信息: https : //www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/dql-doctrine-query-language.html#joins

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM