diff --git a/laravel/database/eloquent/model.php b/laravel/database/eloquent/model.php index 9a90279f..32c504c5 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -257,7 +257,7 @@ abstract class Model { { $includes = (array) $includes; - $given_includes = array(); + $this->includes = array(); foreach ($includes as $relationship => $constraints) { @@ -269,27 +269,9 @@ abstract class Model { list($relationship, $constraints) = array($constraints, null); } - $given_includes[$relationship] = $constraints; + $this->includes[$relationship] = $constraints; } - $relationships = array_keys($given_includes); - $implicits = array(); - - foreach ($relationships as $relationship) - { - $parts = explode('.', $relationship); - - $prefix = ''; - foreach ($parts as $part) - { - $implicits[$prefix.$part] = null; - $prefix .= $part.'.'; - } - } - - // Add all implicit includes to the explicit ones - $this->includes = $given_includes + $implicits; - return $this; } diff --git a/laravel/database/eloquent/query.php b/laravel/database/eloquent/query.php index 25fa4fbc..56fd15c7 100644 --- a/laravel/database/eloquent/query.php +++ b/laravel/database/eloquent/query.php @@ -127,7 +127,7 @@ class Query { if (count($results) > 0) { - foreach ($this->model->includes as $relationship => $constraints) + foreach ($this->model_includes() as $relationship => $constraints) { // If the relationship is nested, we will skip loading it here and let // the load method parse and set the nested eager loads on the right @@ -196,7 +196,7 @@ class Query { { $nested = array(); - foreach ($this->model->includes as $include => $constraints) + foreach ($this->model_includes() as $include => $constraints) { // To get the nested includes, we want to find any includes that begin // the relationship and a dot, then we will strip off the leading @@ -210,6 +210,32 @@ class Query { return $nested; } + /** + * Get the eagerly loaded relationships for the model. + * + * @return array + */ + protected function model_includes() + { + $relationships = array_keys($this->model->includes); + $implicits = array(); + + foreach ($relationships as $relationship) + { + $parts = explode('.', $relationship); + + $prefix = ''; + foreach ($parts as $part) + { + $implicits[$prefix.$part] = NULL; + $prefix .= $part.'.'; + } + } + + // Add all implicit includes to the explicit ones + return $this->model->includes + $implicits; + } + /** * Get a fluent query builder for the model. *