9

AbstractTableGatewayZendを拡張し、継承された関数を利用して、特定のテーブル内のすべてのレコードを取得しようとしていselect()ます。このselect()関数は Zend 型を返しますResultSetが、 を使用して結果の配列を取得できませんtoArray()

次のメッセージが表示されます。

この DataSource の一部としての行は、オブジェクト型で配列にキャストできません

アップデート

私はそれを解決しました

AbstractTableGateway を拡張したと仮定して

$resultSet = $this->select();
foreach($resultSet as $row) { echo $row->yourProperty }
4

4 に答える 4

6

HydratingResultSet次のように使用する必要があります。

class MyClassTable extends AbstractTableGateway
{
    public function __construct(Adapter $adapter)
{
    $this->adapter = $adapter;
    $this->resultSetPrototype = new HydratingResultSet();
    $this->resultSetPrototype->setObjectPrototype(new MyClass());
    $this->initialize();
}

public function fetchAll()
{
    $resultSet = $this->select();
    return $resultSet;
}

public function fetchAllToArray()
{
    $aData = $this->fetchAll()->toArray();
    return $aData;
}
于 2013-05-30T13:51:37.117 に答える
4

これを試すこともできます

$sql = new Sql($adapter);

$select = $sql->select();

$select->from('table');

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

$results = $statement->execute();

$resultSet = new ResultSet();
$resultSet->initialize($results);

print_r($resultSet->toArray());

Zend\Db\ResultSet\ResultSet; を使用。

于 2013-09-30T19:57:13.220 に答える
3

使ってみてください

(array)$resultSet

私はこれをZFで時々使用し、正常に動作します。

于 2013-02-21T14:31:29.327 に答える
2

私の問題は@Fatmuemooが指摘したとおりでした。

カスタム オブジェクトのプロトタイプを登録する場合は、次のようにコーディングします。

$resultSetPrototype = new ResultSet($entityClassName, new $entityClassName);
$instance->setResultSetPrototype($resultSetPrototype);

Yout Entity クラスにtoArray()メソッドを実装する必要があります。

public function toArray()
{
    return get_object_vars($this);
}
于 2015-12-15T10:51:03.250 に答える