/**
* 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;
}
}