8

データベースに保存されている値を持つオブジェクトがあります。私のオブジェクトには、そのID(外部キー)だけを使用してデータベースに格納されている別のオブジェクトも含まれています。

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

Hydrator/exchangeArrayZF2の機能の前に、マッパーを使用して、オブジェクトを作成するために必要なすべてのものを取得します。今、私はオブジェクトを作成するために使用Hydration/exchangeArrayするだけでこの余分なレイヤーを排除しようとしていますが、ネストされたオブジェクトの作成に少し行き詰まっています。

エンティティにInnerオブジェクトのテーブルを挿入して、そのIDが「exchangeArray」に渡された場合に作成できるようにする必要がありますか?

例として、エンティティの例を次に示します。

// Village
id, name, position, square_id

// Map Square
id, name, type

square_idをVillageのexchangeArray()関数に送信すると。それはmapTableを取得し、ハイドレーターを使用して、私が持っている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 に答える