src/xPDO/Om/xPDOObject.php
public static function loadCollectionGraph(xPDO & $xpdo, $className, $graph, $criteria, $cacheFlag) {
        $objCollection = array();
        if ($query= $xpdo->newQuery($className, $criteria, $cacheFlag)) {
            $query = $xpdo->addDerivativeCriteria($className, $query);
            $query->bindGraph($graph);
            $rows = array();
            $fromCache = false;
            $collectionCaching = (integer) $xpdo->getOption(xPDO::OPT_CACHE_DB_COLLECTIONS, array(), 1);
            if ($collectionCaching > 0 && $xpdo->_cacheEnabled && $cacheFlag) {
                $rows= $xpdo->fromCache($query);
                $fromCache = !empty($rows);
            }
            if (!$fromCache) {
                if ($query->prepare()) {
                    $tstart = microtime(true);
                    if ($query->stmt->execute()) {
                        $xpdo->queryTime += microtime(true) - $tstart;
                        $xpdo->executedQueries++;
                        $objCollection= $query->hydrateGraph($query->stmt, $cacheFlag);
                    } else {
                        $xpdo->queryTime += microtime(true) - $tstart;
                        $xpdo->executedQueries++;
                        $xpdo->log(xPDO::LOG_LEVEL_ERROR, "Error {$query->stmt->errorCode()} executing query: {$query->sql} - " . print_r($query->stmt->errorInfo(), true));
                    }
                } else {
                    $xpdo->log(xPDO::LOG_LEVEL_ERROR, "Error {$xpdo->errorCode()} preparing statement: {$query->sql} - " . print_r($xpdo->errorInfo(), true));
                }
            } elseif (!empty($rows)) {
                $objCollection= $query->hydrateGraph($rows, $cacheFlag);
            }
        }
        return $objCollection;
    }
public static function loadCollectionGraph(xPDO & $xpdo, $className, $graph, $criteria, $cacheFlag) {
        $objCollection = array();
        if ($query= $xpdo->newQuery($className, $criteria, $cacheFlag)) {
            $query = $xpdo->addDerivativeCriteria($className, $query);
            $query->bindGraph($graph);
            $rows = array();
            $fromCache = false;
            $collectionCaching = (integer) $xpdo->getOption(xPDO::OPT_CACHE_DB_COLLECTIONS, array(), 1);
            if ($collectionCaching > 0 && $xpdo->_cacheEnabled && $cacheFlag) {
                $rows= $xpdo->fromCache($query);
                $fromCache = !empty($rows);
            }
            if (!$fromCache) {
                if ($query->prepare()) {
                    $tstart = microtime(true);
                    if ($query->stmt->execute()) {
                        $xpdo->queryTime += microtime(true) - $tstart;
                        $xpdo->executedQueries++;
                        $objCollection= $query->hydrateGraph($query->stmt, $cacheFlag);
                    } else {
                        $xpdo->queryTime += microtime(true) - $tstart;
                        $xpdo->executedQueries++;
                        $xpdo->log(xPDO::LOG_LEVEL_ERROR, "Error {$query->stmt->errorCode()} executing query: {$query->sql} - " . print_r($query->stmt->errorInfo(), true));
                    }
                } else {
                    $xpdo->log(xPDO::LOG_LEVEL_ERROR, "Error {$xpdo->errorCode()} preparing statement: {$query->sql} - " . print_r($xpdo->errorInfo(), true));
                }
            } elseif (!empty($rows)) {
                $objCollection= $query->hydrateGraph($rows, $cacheFlag);
            }
        }
        return $objCollection;
    }
public static function loadCollectionGraph ( xPDO & $ xpdo , $ className , $ graph , $ criteria , $ cacheFlag ) { $ objCollection = array ( ) ; if ( $ query = $ xpdo -> newQuery ( $ className , $ criteria , $ cacheFlag ) ) { $ query = $ xpdo -> addDerivativeCriteria ( $ className , $ query ) ; $ query -> bindGraph ( $ graph ) ; $ rows = array ( ) ; $ fromCache = false ; $ collectionCaching = ( integer ) $ xpdo -> getOption ( xPDO :: OPT_CACHE_DB_COLLECTIONS , array ( ) , 1 ) ; if ( $ collectionCaching > 0 && $ xpdo -> _cacheEnabled && $ cacheFlag ) { $ rows = $ xpdo -> fromCache ( $ query ) ; $ fromCache = ! empty ( $ rows ) ; } if ( ! $ fromCache ) { if ( $ query -> prepare ( ) ) { $ tstart = microtime ( true ) ; if ( $ query -> stmt -> execute ( ) ) { $ xpdo -> queryTime += microtime ( true ) - $ tstart ; $ xpdo -> executedQueries ++ ; $ objCollection = $ query -> hydrateGraph ( $ query -> stmt , $ cacheFlag ) ; } else { $ xpdo -> queryTime += microtime ( true ) - $ tstart ; $ xpdo -> executedQueries ++ ; $ xpdo -> log ( xPDO :: LOG_LEVEL_ERROR , "Error {$query->stmt->errorCode()} executing query: {$query->sql} - " . print_r ( $ query -> stmt -> errorInfo ( ) , true ) ) ; } } else { $ xpdo -> log ( xPDO :: LOG_LEVEL_ERROR , "Error {$xpdo->errorCode()} preparing statement: {$query->sql} - " . print_r ( $ xpdo -> errorInfo ( ) , true ) ) ; } } elseif ( ! empty ( $ rows ) ) { $ objCollection = $ query -> hydrateGraph ( $ rows , $ cacheFlag ) ; } } return $ objCollection ; }
Load a collection of xPDOObject instances and a graph of related objects.

@static
@param xPDO &$xpdo A valid xPDO instance.
@param string $className Name of the class.
@param string|array $graph A related object graph in array or JSON
format, e.g. array('relationAlias'=>array('subRelationAlias'=>array()))
or {"relationAlias":{"subRelationAlias":{}}}.  Note that the empty arrays
are necessary in order for the relation to be recognized.
@param mixed $criteria A valid primary key, criteria array, or xPDOCriteria instance.
@param boolean|integer $cacheFlag Indicates if the objects should be
cached and optionally, by specifying an integer value, for how many
seconds.
@return array An array of xPDOObject instances or an empty array if no instances are loaded.
Load a collection of xPDOObject instances and a graph of related objects .