8

我有一个对象,其值存储在我的数据库中。我的对象还包含另一个对象,该对象仅使用它的 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 并使用 hydrator 使用我拥有的 ID 拉入正方形。

在我的实体中拥有映射器实例似乎是不对的,因为我认为它们应该与任何东西断开连接,但它是自己的实体特定参数和功能?

4

1 回答 1

5

我认为您可能会受益于查看Zend\Stdlib\Hydrator\Strategy\StrategyInterface.

通过创建一个 Strategy 类,您可以将其附加到您的 Hydrator,因此当找到特定键(在本例中为 square_id)时,Hydrator 将数据传递到 Strategy 类到extract()hydrate()

然后 Strategy 类可以做任何需要的事情来水合和提取数据。我使用了几个简单的策略类getArrayCopy()/exchangeArray()和其他水合/提取多个实体的策略。

于 2012-10-08T14:02:02.560 回答