/** * Locates relations with delete flag and cascades the delete event. * @return void */ protected function performDeleteOnRelations() { $definitions = $this->getRelationDefinitions(); foreach ($definitions as $type => $relations) { /* * Hard 'delete' definition */ foreach ($relations as $name => $options) { if (!Arr::get($options, 'delete', false)) { continue; } if (!($relation = $this->{$name})) { continue; } if ($relation instanceof EloquentModel) { $relation->forceDelete(); } elseif ($relation instanceof CollectionBase) { $relation->each(function ($model) { $model->forceDelete(); }); } } /* * Belongs-To-Many should clean up after itself always */ if ($type == 'belongsToMany') { foreach ($relations as $name => $options) { $this->{$name}()->detach(); } } } }
/** * Get the model's original attribute values. * * @param string|null $key * @param mixed $default * @return array */ public function getOriginal($key = null, $default = null) { return Arr::get($this->original, $key, $default); }