ZF2 / ZF3水合物对象和单个查询的嵌套对象

时间:2017-01-21 11:05:18

标签: php zend-framework zend-framework2 zf3

假设我有一个返回以下数据的查询:

RangeId | MinValue | MaxValue | Resolution | UnitId | UnitName

我想用上述数据水合对象MeasurementRange

class MeasurementRange {
    public function getRangeId() {...};
    public function setRangeId($id) {...};
    public function getRange() {...};
    public function setRange(Range $range) {...};
    public function getUnit() {...};
    public function setUnit(Unit $unit) {...};
}

class Range {
    public function getMinValue() {...};
    public function setMinValue(float $minVal) {...};
    public function getMaxValue() {...};
    public function setMaxValue(float $maxVal) {...};
    public function getResolution {...};
    public function setResolution(float $resolution) {...};
}

class Unit {
    public function getUnitId() {...};
    public function setUnitId(int $id) {...};
    public function getUnitName() {...};
    public function setUnitName(string $name) {...};
}

如您所见,MeasurementRange对象已设置RangeUnit个对象。

如何从上述查询中保留MeasurementRange以及内部RangeUnit对象?

PS:我没有指定对象的受保护属性。我猜他们是不言而喻的。

1 个答案:

答案 0 :(得分:1)

您需要创建一个映射器,它将使用您的dbAdapter将数据作为数组获取,然后使用水合器来水合所有对象,最后将RangeUnit添加到{ {1}}。您也可以创建一个定制保湿器(就单一责任而言,这将更好)。

我没有时间清理下面的示例,但这就是它的样子:)

MeasurementRange