我正在使用Zend 框架 2创建网页。
通过TableGateway我正在访问我的PostgreSQL DB。
有没有可以在Zend 框架 2中有效使用的TableGateway替代方案,以及易于使用的文档和东西?
我正试图摆脱Doctrine 2(除非你能以其他方式说服我)。
任何帮助将不胜感激。
我正在使用Zend 框架 2创建网页。
通过TableGateway我正在访问我的PostgreSQL DB。
有没有可以在Zend 框架 2中有效使用的TableGateway替代方案,以及易于使用的文档和东西?
我正试图摆脱Doctrine 2(除非你能以其他方式说服我)。
任何帮助将不胜感激。
正如我所评论的,我使用了 3 种方法来处理数据访问。
TableGateway 模式还可以,但对于大型应用程序来说维护起来并不容易。
另一种常用的模式是数据映射模式,为此您可以使用 AbstractDbMapper 和 hydrator 进行映射。AbstractDbMapper 链接
实体模式,如Doctrine
我最终决定使用原则,因为它很容易维护,你可以节省几个小时的代码,但如果你不想使用原则,我认为数据映射器模式是最好的选择。
真正令人困惑的是什么?如果您使用的是 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);
},
使用以前的我没有遇到任何问题,但不能说其他人是否遇到过?