0

Zend Framework で Web アプリケーションを開発しています。ドキュメントにはそれが書かれています...

「ただし、大規模なシステムではテーブル データ ゲートウェイ パターンが制限になる可能性があることに注意してください。」

  • Table Data Gateway を使用することの欠点は何ですか?
  • Zend でデータベースを処理する最も適切な方法は何ですか?
4

2 に答える 2

2

Table Data Gateway を使用することの欠点は、複雑なクエリの記述が制限される可能性があることです。などのカスタム クエリUNIONSUB QUERYおよびWHEREなどの句を使用する

 WHERE A OR (B AND C) OR D

複雑なクエリを作成する最善の方法は、複雑なクエリを手動で作成することです。したがって、それらを実行する最良の方法は、Zend_Db_Adapter

于 2013-08-26T10:10:14.390 に答える
2

ZF2 には、Data Mapper のようなものがありました (この回答を見ることができます: Data Mapper、Table Data Gateway (Gateway)、Data Access Object (DAO)、および Repository パターンの違いは何ですか?

しかし、ZF2 を使用している場合、この問題は解決されており、データベースと通信する最も効率的な方法は、定義された ResultSetPrototype (exchangeArray 関数を持つモデルの 1 つとして) を持つ TableGateway であり、Zend/Db/Adapter クラスを介してここにある方法のサンプルです。 ZF2:

SERVICE.CONFIG:

'Gallery\Model\AnythingListTable' =>  function($sm) {
        $tableGateway = $sm->get('AnythingListTableGateway');
        $table = new AnythingListTable($tableGateway);
        return $table;
    },
    'AnythingListTableGateway' => function ($sm) {
        $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
        $resultSetPrototype = new ResultSet();
        $resultSetPrototype->setArrayObjectPrototype(new Anything());
        return new TableGateway('Anything', $dbAdapter, null, $resultSetPrototype);
    },

AnythingTable は 1 つのモデル (データベースを操作する関数を含む)

于 2013-08-26T10:13:46.070 に答える