2

モデルで Sql オブジェクトを使用してデータベースにクエリを実行したいと考えています。私はエンティティオブジェクトを持っており、Person と言うことができ、Person オブジェクトにはexchangeArray()メソッドがあります。Array Object Prototypeこの Person オブジェクトをSQL クエリの ResultSetに設定したいと考えています。

これを行う方法を調査しましたが、見つかった唯一の情報は、 にResultSet割り当てられたオブジェクトに Array Object Prototype を設定する方法Zend\Db\TableGateway\TableGatewayです。

$personEntity = new PersonEntity();
$resultSet = new \Zend\Db\ResultSet\ResultSet();
$resultSet->setArrayObjectPrototype($personEntity);
$db = $sm->get('Zend\Db\Adapter\Adapter');
$table = new \Zend\Db\TableGateway\TableGateway('table', $db, null, $resultSet);

PersonEntity私の質問は、オブジェクトから返されるデータベースの行を表すようにオブジェクトを設定するにはどうすればよいZend\Db\Sql\Sqlですか?

前もって感謝します、

スティーブ

4

2 に答える 2

4

次の例があなたの質問に答えると思います:

class Foo
{
    ...
    public function fetchAll() 
    {
        $sql = new Sql($dbAdapter); // Zend\Db\Sql\Sql
        $select = $sql->select('table_foo');
        $query = $sql->prepareStatementForSqlObject($select);
        $resutl = $query->execute();
        $resultSet = new ResultSet(); // Zend\Db\ResultSet\ResultSet
        $resultSet->setArrayObjectPrototype(new EntityObject()); // <-- HERE you set your entity object
        $resultSet->initialize($resutl);
        return $resultSet;
    }
    ...
}

このコードは、ResultSetすべての行が返されるオブジェクトを返します。この場合は、EntityObject.

これdataSourceは、結果オブジェクトへの の注入を示すマニュアルへの参照です。

于 2013-04-13T11:00:19.190 に答える