0

我正在使用 Zend Framework 开发 Web 应用程序。在文档中它说...

“请注意,表数据网关模式可能会在更大的系统中受到限制。”

  • 使用表数据网关有什么缺点?
  • 用 Zend 处理数据库最合适的方法是什么?
4

2 回答 2

2

使用表数据网关的缺点是它会限制您编写复杂的查询。自定义查询,例如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,这个问题已经解决了,与数据库通信的最有效方式是 TableGateway 与定义的 ResultSetPrototype(作为具有 exchangeArray 功能的模型之一)和 ofc 槽 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);
    },

AnyTable 是一种模型(具有操作数据库的功能) Any 是第二种模型,具有关于数据形式 DB 的过滤器和规则

于 2013-08-26T10:13:46.070 回答