diff --git a/laravel/database/eloquent/model.php b/laravel/database/eloquent/model.php index ab3bd95c..4fae10a1 100644 --- a/laravel/database/eloquent/model.php +++ b/laravel/database/eloquent/model.php @@ -577,12 +577,21 @@ public function __call($method, $parameters) // to perform the appropriate action based on the method. if (starts_with($method, 'get_')) { - return $this->get_attribute(substr($method, 4)); + return $this->attributes[substr($method, 4)]; } elseif (starts_with($method, 'set_')) { - return $this->set_attribute(substr($method, 4), $parameters[0]); + $this->attributes[substr($method, 4)] = $parameters[0]; } + + // If the method begins with "add_", we will assume that the developer is + // adding a related model instance to the model. This is useful for + // adding all of the related models and then saving at once. + elseif (starts_with($method, 'add_')) + { + $this->relationships[substr($method, 4)][] = $parameters[0]; + } + // Finally we will assume that the method is actually the beginning of a // query, such as "where", and will create a new query instance and // call the method on the query instance, returning it after.