我正在尝试实现 RowGateway
类到我的实体,我已经有一个与该实体一起使用的表单,并且我正在尝试将水化器设置为与 ClassMethods
一起使用.
我还注意到ArraySerializable
Hydrator 调用populate()
方法或exchangeArray()
不幸的是,此方法在编辑行时设置了适当的主键ClassMethods
Hydrator 不会这样做。
使用 Classmethod Hydrator 时设置正确主键值的最佳方法是什么?我应该在将实体绑定(bind)到表单之前设置此值吗?或者,我应该扩展 Classmethod H. 以在初始化时执行此任务吗?
最佳答案
我不喜欢在我的实体中使用数据层的知识。使用 exchangeArray()
时,您可以在实体本身中创建映射。我对 Zend 的水化器进行了一些研究,并发现了一些帖子,包括这篇文章。 Andrew 扩展 ClassMethods
Hydrator 的示例似乎是将列名称映射到 getter/setter 名称的好方法。
扩展 ClassMethods
Hydrator 时,您还可以实现 Zend\Stdlib\Hydrator\HydratorInterface
。
对于数据操作,请使用水化器策略。
http://framework.zend.com/manual/2.0/en/modules/zend.stdlib.hydrator.strategy.html http://juriansluiman.nl/nl/article/125/strategies-for-hydrators-a-practical-use-case
要将您的实体分离到多个数据源,您可以使用Hydrator 过滤器。例如,默认情况下,ClassMethods
Hydrator 提取以 get 开头的所有实体方法。
http://framework.zend.com/manual/2.1/en/modules/zend.stdlib.hydrator.filter.html
关于php - ZF2 Classmethods Hydrator 与 RowGateway 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13447501/