dates)); $dates[$class] = $this->dates; } return $dates[$class]; } /** * Get an attribute from the model. If nothing is found, attempt to load * a custom relation method with this key. * * @param string $key * @return mixed */ public function getAttribute($key) { if (! is_null($value = parent::getAttribute($key))) { return $value; } // If a custom relation with this key has been set up, then we will load // and return results from the query and hydrate the relationship's // value on the "relationships" array. if ($relation = $this->getCustomRelation($key)) { if (! $relation instanceof Relation) { throw new LogicException('Relationship method must return an object of type ' . 'Illuminate\Database\Eloquent\Relations\Relation'); } return $this->relations[$key] = $relation->getResults(); } } /** * Get a custom relation object. * * @param string $name * @return mixed */ protected function getCustomRelation($name) { return static::$dispatcher->until( new ModelRelationship($this, $name) ); } /** * @inheritdoc */ public function __call($method, $arguments) { if ($relation = $this->getCustomRelation($method)) { return $relation; } return parent::__call($method, $arguments); } }