/**
*
* Attempts to execute any relationship defined for eager loading
*
* @param Orm\Wrapper $orm
*/
public static function hydrate($orm, &$results, $return_result_set = false)
{
if (count($results) > 0) {
foreach ($orm->relationships as $include) {
$relationship = false;
$relationship_with = null;
$relationship_args = array();
if (is_array($include)) {
$relationship = key($include);
if (isset($include[$relationship]['with'])) {
$relationship_with = $include[$relationship]['with'];
unset($include[$relationship]['with']);
}
$relationship_args = $include[$relationship];
} else {
$relationship = $include;
}
if ($pos = strpos($relationship, '.')) {
$relationship_with = substr($relationship, $pos + 1, strlen($relationship));
$relationship = substr($relationship, 0, $pos);
$relationship_args = array();
}
$relationship = array('name' => $relationship, 'with' => $relationship_with, 'args' => (array) $relationship_args);
// check if relationship exists on the model
$model = $orm->create();
if (!method_exists($model, $relationship['name'])) {
throw new Exception("Attempting to eager load [{$relationship['name']}], but the relationship is not defined.", '500');
}
self::eagerly($model, $results, $relationship, $return_result_set);
}
}
return $results;
}