gpt4 book ai didi

php - ZF2 - 如何使用 Hydrator/exchangeArray() 填充嵌套对象

转载 作者:可可西里 更新时间:2023-11-01 12:19:23 24 4
gpt4 key购买 nike

我有一个对象,其值存储在我的数据库中。我的对象还包含另一个对象,它仅使用它的 ID(外键)存储在数据库中。

http://framework.zend.com/manual/2.0/en/modules/zend.stdlib.hydrator.html

在 ZF2 中的 Hydrator/exchangeArray 功能之前,您将使用 Mapper 获取创建对象所需的一切。现在,我试图通过仅使用 Hydration/exchangeArray 来填充我的对象来消除这个额外的层,但在创建嵌套对象时有点卡住了。

我的实体是否应该将内部对象的表注入(inject)其中,以便在它的 ID 传递到我的“exchangeArray”时我可以创建它?

这里以示例实体为例。

// Village
id, name, position, square_id

// Map Square
id, name, type

将 square_id 发送到我的村庄的 exchangeArray() 函数后。它会获取 mapTable 并使用 hydrator 使用我拥有的 ID 拉入正方形。

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

最佳答案

我认为您可能会从查看 Zend\Stdlib\Hydrator\Strategy\StrategyInterface 中受益。

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

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

关于php - ZF2 - 如何使用 Hydrator/exchangeArray() 填充嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com