Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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 zf3 db-获取所有返回的重复行_Php_Sql_Select_Zend Framework3_Fetchall - Fatal编程技术网

Php zf3 db-获取所有返回的重复行

Php zf3 db-获取所有返回的重复行,php,sql,select,zend-framework3,fetchall,Php,Sql,Select,Zend Framework3,Fetchall,我对zend db有一个问题,当我使用fetchall()时,行返回的是重复的,例如: { "title" : "Florianópolis", "neighborhoods" : [ { "0" : "6", "1" : "Abraão", "name" : "Abraão

我对zend db有一个问题,当我使用
fetchall()
时,行返回的是重复的,例如:

{
    "title"         : "Florianópolis",
    "neighborhoods" : [ {
                            "0"      : "6",
                            "1"      : "Abraão",
                            "name"   : "Abraão",
                            "number" : "6"
                        },
                        {
                            "0"      : "9",
                            "1"      : "Açores",
                            "name"   : "Açores",
                            "number" : "9"
                        },
                        {
                            "0"      : "5",
                            "1"      : "Agronômica",
                            "name"   : "Agronômica",
                            "number" : "5"
                        },
正如你所看到的,我收到了他们两倍的名字和号码。以下是获取信息的方法:

public function getNeighborhoodsByCity( $city )
{
    try
    {
        $this -> sql = new Sql( $this -> adapter );
        $select = $this -> sql -> select();
        $select -> from( $this -> table );
        $select -> columns( array( 'number',
                                   'name' ) );
        $select -> where( "city = '{$city}'" );
        $select -> order( "name" );
        $statement = $this -> sql -> prepareStatementForSqlObject( $select );
        $result = $statement -> execute() -> getResource() -> fetchall();
    }
    catch ( \Exception $e )
    {
        throw new \Exception ( 'ERROR : ' . $e -> getMessage() );
    }

    return $result;
}
我想知道是什么在生成
0
1
。 顺便说一句,我正在学习Zf3,所以任何改进此代码的提示都是非常受欢迎的!
提前谢谢

老实说,我不知道错误的原因,但您可以这样解决:

安装水合器组件(如果是zf3):

替换您的代码:

$statement = $this -> sql -> prepareStatementForSqlObject( $select );
$result = $statement -> execute() -> getResource() -> fetchall();
致:

在头文件中包括de包:

use Zend\Db\ResultSet\HydratingResultSet;
use Zend\Stdlib\ArrayObject;
use Zend\Hydrator\ArraySerializable;    
参考:

$statement = $sql->prepareStatementForSqlObject ( $select );
$result = $statement->execute ();

if (! $result instanceof ResultInterface || ! $result->isQueryResult ()) {
    return [ ];
}

$resultSet = new HydratingResultSet ( new ArraySerializable(), new ArrayObject() );
$resultSet->initialize ( $result );
return $resultSet;  
use Zend\Db\ResultSet\HydratingResultSet;
use Zend\Stdlib\ArrayObject;
use Zend\Hydrator\ArraySerializable;