首页 > 解决方案 > 如何使用联接表更改 Doctrine 结果中的数组结果层次结构

问题描述

我的联接查询:(在实体中不是关系)

    $query = $this
        ->createQueryBuilder('f')
        ->select('f');

    $query->leftJoin(IntranetType::class, 'it', 'WITH', 'it.flyerLayoutType = f.flyerLayout');
    $query->addSelect('it');

    $query->orderBy('f.filename');
    $query->addOrderBy('it.flyerLayoutType');

    // $flyers = $query->getQuery()->getArrayResult(); <-- fist try
    $flyers = $query->getQuery()->getResult(Query::HYDRATE_ARRAY);

结果数组的格式为:

array(149) {
[0]=>
array(9) {
 data from table with alias f
}
[1]=>
array(4) {
 data from table with alias it
}
[2]=>
array(9) {
 data from table with alias f
}
[3]=>
array(4) {
 data from table with alias it
}

但我需要这样的格式:

array(149) {
[0]=>
array(9) {
 data from table with alias f
  ['joined table']=>
  array(4) {
   data from table with alias it
  }
}

[1]=>
array(9) {
 data from table with alias f
  ['joined table']=>
  array(4) {
   data from table with alias it
  }
}

只是层次结构......数组中的一个键=一个传单(一个项目)和连接数据......

标签: phpsqlsymfonymultidimensional-arraydoctrine

解决方案


看来您只需要从中删除参数getResult()(或将其替换为 default ::HYDRATE_OBJECT)。

键“连接表”不会出现,但您将根据您的实体获得数据结构。


推荐阅读