Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取不带前缀或后缀的数组_Php_Pdo_Doctrine Orm_Dql - Fatal编程技术网

Php 获取不带前缀或后缀的数组

Php 获取不带前缀或后缀的数组,php,pdo,doctrine-orm,dql,Php,Pdo,Doctrine Orm,Dql,我试图从平面数组中返回的条令中获取连接数据。这可以通过使用不同的方法实现,但是我一直将表别名作为列名的前缀,或者将索引作为列名的后缀。例子如下: 我的查询(使用查询生成器): 使用$query->getResult(AbstractQuery::水合物\u SCALAR)我的输出如下所示: array(12) { ["gl_GROUP_LVL_ID"]=> int(4) ["gl_PARENT_LVL_ID"]=> int(0) ["gl_DESCRIPTION"

我试图从平面数组中返回的条令中获取连接数据。这可以通过使用不同的方法实现,但是我一直将表别名作为列名的前缀,或者将索引作为列名的后缀。例子如下:

我的查询(使用查询生成器):

使用
$query->getResult(AbstractQuery::水合物\u SCALAR)
我的输出如下所示:

array(12) {
  ["gl_GROUP_LVL_ID"]=>
  int(4)
  ["gl_PARENT_LVL_ID"]=>
  int(0)
  ["gl_DESCRIPTION"]=>
  string(18) "Second description"
  ["gl_MAINCAT_ID"]=>
  int(2)
  ["gl_USER_GROUP_ID"]=>
  int(7)
  ["gl_IMAGE_ID"]=>
  int(6)
  ["gl_ORPHAN_GROUP"]=>
  int(0)
  ["gl_ANIMATION_ID"]=>
  int(-1)
  ["gl_SEQUENCE_NO"]=>
  int(6)
  ["gl_IMAGINE_ID_DESCRIPTION"]=>
  string(25) "GROUP_LEVEL_DESCRIPTION_6"
  ["MAINCAT"]=>
  string(1) "F"
  ["IMAGE_NAME"]=>
  string(12) "some pic.png"
}
array(12) {
  ["GROUP_LVL_ID_0"]=>
  string(1) "4"
  ["PARENT_LVL_ID_1"]=>
  string(1) "0"
  ["DESCRIPTION_2"]=>
  string(18) "Second description"
  ["MAINCAT_ID_3"]=>
  string(1) "2"
  ["USER_GROUP_ID_4"]=>
  string(1) "7"
  ["IMAGE_ID_5"]=>
  string(1) "6"
  ["ORPHAN_GROUP_6"]=>
  string(1) "0"
  ["ANIMATION_ID_7"]=>
  string(2) "-1"
  ["SEQUENCE_NO_8"]=>
  string(1) "6"
  ["IMAGINE_ID_DESCRIPTION_9"]=>
  string(25) "GROUP_LEVEL_DESCRIPTION_6"
  ["MAINCAT_10"]=>
  string(1) "F"
  ["IMAGE_NAME_11"]=>
  string(12) "some pic.png"
}
问题是我不希望附加表别名“gl_u2;”。所以读了一些书后,我发现可以编写自己的自定义水合器。所以我做了我的水合器如下

class HydrateScalarCustom extends AbstractHydrator
{
    protected function hydrateAllData()
    {
        return $this->_stmt->fetchAll(\PDO::FETCH_ASSOC);
    }
}
但是,即使我使用了
\PDO::FETCH_ASSOC
,它也会在列后面添加一个基于0的索引,如下所示:

array(12) {
  ["gl_GROUP_LVL_ID"]=>
  int(4)
  ["gl_PARENT_LVL_ID"]=>
  int(0)
  ["gl_DESCRIPTION"]=>
  string(18) "Second description"
  ["gl_MAINCAT_ID"]=>
  int(2)
  ["gl_USER_GROUP_ID"]=>
  int(7)
  ["gl_IMAGE_ID"]=>
  int(6)
  ["gl_ORPHAN_GROUP"]=>
  int(0)
  ["gl_ANIMATION_ID"]=>
  int(-1)
  ["gl_SEQUENCE_NO"]=>
  int(6)
  ["gl_IMAGINE_ID_DESCRIPTION"]=>
  string(25) "GROUP_LEVEL_DESCRIPTION_6"
  ["MAINCAT"]=>
  string(1) "F"
  ["IMAGE_NAME"]=>
  string(12) "some pic.png"
}
array(12) {
  ["GROUP_LVL_ID_0"]=>
  string(1) "4"
  ["PARENT_LVL_ID_1"]=>
  string(1) "0"
  ["DESCRIPTION_2"]=>
  string(18) "Second description"
  ["MAINCAT_ID_3"]=>
  string(1) "2"
  ["USER_GROUP_ID_4"]=>
  string(1) "7"
  ["IMAGE_ID_5"]=>
  string(1) "6"
  ["ORPHAN_GROUP_6"]=>
  string(1) "0"
  ["ANIMATION_ID_7"]=>
  string(2) "-1"
  ["SEQUENCE_NO_8"]=>
  string(1) "6"
  ["IMAGINE_ID_DESCRIPTION_9"]=>
  string(25) "GROUP_LEVEL_DESCRIPTION_6"
  ["MAINCAT_10"]=>
  string(1) "F"
  ["IMAGE_NAME_11"]=>
  string(12) "some pic.png"
}
如果你有任何想法,请告诉我。我听说在PDO中,如果列名不唯一,它可能会将索引添加到列名中。但是,所有列都是唯一的。我不想迭代返回的数据并去掉前缀/后缀,而是让它以正确的方式返回


提前谢谢。

我找到了一个临时解决方案,虽然不太理想。使用
$query->getResult(AbstractQuery::Hydrome\u SCALAR)
并指定组级别表
$qb->select中的每一列('m.MAINCAT,i.IMAGE\u NAME,gl.group\u LVL\u ID,gl.PARENT\u LVL\u ID…')
将返回不带前缀的列。理想情况下,我不需要指定要获取的每个列