Sleimanx2\Plastic\Fillers\EloquentFiller::loadRelationsAttributesRecursive PHP Method

loadRelationsAttributesRecursive() protected method

Get the relations attributes from a model.
protected loadRelationsAttributesRecursive ( Model $model )
$model Illuminate\Database\Eloquent\Model
    protected function loadRelationsAttributesRecursive(Model $model)
    {
        $attributes = $model->getAttributes();
        foreach ($attributes as $key => $value) {
            if (method_exists($model, $key)) {
                $reflection_method = new ReflectionMethod($model, $key);
                if ($reflection_method->class != "Illuminate\\Database\\Eloquent\\Model") {
                    $relation = $model->{$key}();
                    if ($relation instanceof Relation) {
                        // Get the relation models/model if value is not null
                        if ($value === null) {
                            $models = null;
                        } else {
                            // Check if the relation field is single model or collections
                            if (!($multiLevelRelation = $this->isMultiLevelArray($value))) {
                                $value = [$value];
                            }
                            $models = $this->hydrateRecursive($relation->getModel(), $value, $relation);
                            if (!$multiLevelRelation) {
                                $models = $models->first();
                            }
                        }
                        // Unset attribute before setting relation
                        unset($model[$key]);
                        // Set the relation value
                        $model->setRelation($key, $models);
                    }
                }
            }
        }
    }