0

我正在使用Zend 框架 2创建网页。

通过TableGateway我正在访问我的PostgreSQL DB

有没有可以在Zend 框架 2中有效使用的TableGateway替代方案,以及易于使用的文档和东西?

我正试图摆脱Doctrine 2除非你能以其他方式说服我)。

任何帮助将不胜感激。

4

2 回答 2

2

正如我所评论的,我使用了 3 种方法来处理数据访问。

  • TableGateway 模式还可以,但对于大型应用程序来说维护起来并不容易。

  • 另一种常用的模式是数据映射模式,为此您可以使用 AbstractDbMapper 和 hydrator 进行映射。AbstractDbMapper 链接

  • 实体模式,如Doctrine

我最终决定使用原则,因为它很容易维护,你可以节省几个小时的代码,但如果你不想使用原则,我认为数据映射器模式是最好的选择。

于 2014-06-03T18:53:16.047 回答
0

真正令人困惑的是什么?如果您使用的是 Zend MVC,那么 Service Manager/Locator 会在任何地方使用,这也是定义 TableGateway/DB 模型的方式。模型的代码仍然很好理解。我不明白真正令人困惑的地方。

一项更改我可以建议使用原始 ZF 2.0 风格的更简单的 getServiceConfig,它一直为我工作。

'Album\Model\AlbumTable' =>  function($sm) {
    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
    $table = new Model\AlbumTable($dbAdapter);
    return $table;
},

代替

'Album\Model\AlbumTable' =>  function($sm) {
     $tableGateway = $sm->get('AlbumTableGateway');
     $table = new AlbumTable($tableGateway);
     return $table;
 },
 'AlbumTableGateway' => function ($sm) {
     $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
     $resultSetPrototype = new ResultSet();
     $resultSetPrototype->setArrayObjectPrototype(new Album());
     return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
 },

使用以前的我没有遇到任何问题,但不能说其他人是否遇到过?

于 2014-05-26T05:40:23.047 回答