/** * Add nested result property to post select queue. * @param string post select statement ID * @param TResultMap current result mapping details. * @param TResultProperty current result property. * @param array a result set row retrieved from the database * @param object the result object */ protected function enquequePostSelect($select, $resultMap, $property, $row, $resultObject) { $statement = $this->getManager()->getMappedStatement($select); $key = $this->getPostSelectKeys($resultMap, $property, $row); $postSelect = new TPostSelectBinding(); $postSelect->setStatement($statement); $postSelect->setResultObject($resultObject); $postSelect->setResultProperty($property); $postSelect->setKeys($key); if ($property->instanceOfListType($resultObject)) { $values = null; if ($property->getLazyLoad()) { $values = TLazyLoadList::newInstance($statement, $key, $resultObject, $property->getProperty()); TPropertyAccess::set($resultObject, $property->getProperty(), $values); } else { $postSelect->setMethod(self::QUERY_FOR_LIST); } } else { if ($property->instanceOfArrayType($resultObject)) { $postSelect->setMethod(self::QUERY_FOR_ARRAY); } else { $postSelect->setMethod(self::QUERY_FOR_OBJECT); } } if (!$property->getLazyLoad()) { $this->_selectQueue[] = $postSelect; } }