[英]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.