我有一个包含存储在我的数据库中的值的对象。我的对象还包含另一个对象,它只使用它的ID(外键)存储在数据库中。
http://framework.zend.com/manual/2.0/en/modules/zend.stdlib.hydrator.html
在ZF2中的Hydrator/exchangeArray
功能之前,您将使用Mapper来获取创建对象所需的一切。现在我试图通过使用Hydration/exchangeArray
填充我的对象来消除这个额外的图层,但是在创建嵌套对象时有点困难。
我的实体是否应该将Inner对象的表注入其中,以便在将其ID传递给我的'exchangeArray'时创建它?
以下是示例实体作为示例。
// Village
id, name, position, square_id
// Map Square
id, name, type
将square_id发送到我的Village的exchangeArray()函数。它将获得mapTable并使用水合器使用我拥有的ID拉入方块。
在我的实体中设置映射器实例似乎不正确,因为我认为它们应该与任何东西断开连接,除了它自己的实体特定参数和功能?
答案 0 :(得分:5)
我认为你可以从Zend\Stdlib\Hydrator\Strategy\StrategyInterface
中受益。
通过创建策略类,您可以将其附加到您的Hydrator,因此当找到特定键时(在这种情况下为square_id),Hydrator将数据传递到策略类上extract()
或{{1} }。
然后,策略类可以执行水合和提取数据所需的任何操作。我使用了几个只有hydrate()
/ getArrayCopy()
的策略类以及其他水合/提取多个实体的策略。