Spot\Mapper::validateRelations PHP Метод

validateRelations() защищенный Метод

Validate related entities using relations
protected validateRelations ( EntityInterface $entity ) : EntityInterface
$entity EntityInterface
Результат EntityInterface
    protected function validateRelations($entity)
    {
        $relations = $entity->relations($this, $entity);
        foreach ($relations as $relationName => $relation) {
            if ($relation instanceof Relation\HasOne || $relation instanceof Relation\BelongsTo) {
                $relatedEntity = $entity->{$relationName};
                if ($relatedEntity instanceof EntityInterface) {
                    $errorsRelated = $this->validateRelatedEntity($relatedEntity, $entity, $relation);
                    if (count($errorsRelated)) {
                        $entity->errors([$relationName => $errorsRelated], false);
                    }
                }
            } else {
                if ($relation instanceof Relation\HasMany || $relation instanceof Relation\HasManyThrough) {
                    $relatedEntities = $entity->{$relationName};
                    //No point in validating Queries since they are not modified
                    if ((is_array($relatedEntities) || $relatedEntities instanceof Entity\Collection) && count($relatedEntities)) {
                        $errors = [];
                        foreach ($relatedEntities as $key => $related) {
                            $errorsRelated = $this->validateRelatedEntity($related, $entity, $relation);
                            if (count($errorsRelated)) {
                                $errors[$key] = $errorsRelated;
                            }
                        }
                        if (count($errors)) {
                            $entity->errors([$relationName => $errors], false);
                        }
                    }
                }
            }
        }
        return $entity;
    }