2016-11-09 14 views
1

私はzend framework3を使用しており、データベース用にMysqlドライバを使用しています。私は、データを取得するために以下のコードを使用しています :私はこれを反復していたとき、私はエラーを取得していますzf3のResultSetオブジェクト配列からデータを取得できません

Zend\Db\ResultSet\ResultSet Object 
    (
    [allowedReturnTypes:protected] => Array 
    (
     [0] => arrayobject 
     [1] => array 
    ) 
    [arrayObjectPrototype:protected] => ArrayObject Object 
    (
     [storage:ArrayObject:private] => Array 
      (
      ) 
     ) 

[returnType:protected] => arrayobject 
[buffer:protected] => 
[count:protected] => 
[dataSource:protected] => Zend\Db\ResultSet\ResultSet Object 
    (
     [allowedReturnTypes:protected] => Array 
      (
       [0] => arrayobject 
       [1] => array 
      ) 

     [arrayObjectPrototype:protected] => ArrayObject Object 
      (
       [storage:ArrayObject:private] => Array 
        (
        ) 

      ) 

     [returnType:protected] => arrayobject 
     [buffer:protected] => -1 
     [count:protected] => 
     [dataSource:protected] => Zend\Db\Adapter\Driver\Mysqli\Result Object 
      (
       [resource:protected] => mysqli_result Object 
        (
         [current_field] => 0 
         [field_count] => 8 
         [lengths] => 
         [num_rows] => 15 
         [type] => 0 
        ) 

       [isBuffered:protected] => 1 
       [position:protected] => 0 
       [numberOfRows:protected] => -1 
       [currentComplete:protected] => 
       [nextComplete:protected] => 
       [currentData:protected] => 
       [statementBindValues:protected] => Array 
        (
         [keys] => 
         [values] => Array 
          (
          ) 

        ) 

       [generatedValue:protected] => 0 
      ) 

     [fieldCount:protected] => 8 
     [position:protected] => 0 
    ) 

[fieldCount:protected] => 
[position:protected] => 0 
) 

:私はこのデータをのvar_dump場合は、以下のよう

 $con = $this->adapter; 
     $select = $this->sql->select(); 
     $select->from('nav_menu'); 
     $selectString = $this->sql->getSqlStringForSqlObject($select); 
     $results = $con->query($selectString, $con::QUERY_MODE_EXECUTE); 
     $resultSet = new ResultSet(); 
     $resultSet->initialize($results); 

私は結果を取得しています以下の値を取得してください:

 foreach ($resultSet as $key => $value) { 
      $array[$i]['id'] = $value->id; 
      $array[$i]['name'] = $value->name; 
      $array[$i]['label'] = $value->label; 
      $array[$i]['route'] = $value->route; 
      $array[$i]['parent_id'] = $value->parent_id; 
      $i++; 
     } 

私は間違っていません。一方、num_rowsは15ですが、これはZF2でうまくいきます。 いずれかのお手伝いをいただければ幸いです。

は、私は多くのことを試してみました

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

でコード

$selectString = $this->sql->getSqlStringForSqlObject($select); 
    $results = $con->query($selectString, $con::QUERY_MODE_EXECUTE); 

を置き換えるならば、私が得ることがわかりresult.But私は

を通じて結果を取得しておりませんなぜ私の質問
$selectString = $this->sql->getSqlStringForSqlObject($select); 
    $results = $con->query($selectString, $con::QUERY_MODE_EXECUTE); 

答えて

1

getSqlStringForSqlObjectはバージョン2.4以降では廃止されました。しかし、それはそれがもう動作しない理由であるかどうかはわかりません。

docsによると、これには2つの方法があります。あなたはおそらく探しているクエリを実行すると

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

を::

$selectString = $sql->buildSqlString($select); 
$results = $adapter->query($selectString, $adapter::QUERY_MODE_EXECUTE); 
+0

ありがとうclearificationのためにあなたが正確に同じを使用している文を、準備して。 –

+0

プロシージャを呼び出す方法を知っていますか。私はこのコードを使用しています $ results = $ con-> query( 'CALL 'fetching_menu'(?)'、$ spParams); \t \t $ resultSet =新しいResultSet; \t \t $ resultSet-> initialize($ results); ここで、$ spParams = array( 'backend'); エラーが発生しています。 –

+0

私はこれを解決しました。私は $ spParams = ['バックエンド']を使用しました。 \t \t $ステートメント= $ con-> createStatement( 'CALL 'fetching_menu'(?)'、$ spParams); \t \t \t \t $ result = $ statement-> execute(); \t \t \t \t $ resultSet = new ResultSet; \t \t \t $ resultSet-> initialize($ result); –

関連する問題