Spot\Relation\HasOne::save PHP Метод

save() публичный Метод

Save related entities
public save ( Spot\EntityInterface $entity, string $relationName, array $options = [] ) : boolean
$entity Spot\EntityInterface Entity to save relation from
$relationName string Name of the relation to save
$options array Options to pass to the mappers
Результат boolean
    public function save(EntityInterface $entity, $relationName, $options = [])
    {
        $lastResult = false;
        $relatedEntity = $entity->relation($relationName);
        $relatedMapper = $this->mapper()->getMapper($this->entityName());
        //Autoloaded relation, no need to save
        if ($relatedEntity instanceof HasOne) {
            return 0;
        }
        if ($relatedEntity === false || $relatedEntity->get($this->foreignKey()) !== $entity->primaryKey()) {
            if ($relatedMapper->entityManager()->fields()[$this->foreignKey()]['notnull']) {
                $relatedMapper->delete([$this->foreignKey() => $entity->primaryKey()]);
            } else {
                $relatedMapper->queryBuilder()->builder()->update($relatedMapper->table())->set($this->foreignKey(), null)->where([$this->foreignKey() => $entity->primaryKey()]);
            }
            if ($relatedEntity instanceof EntityInterface) {
                //Update the foreign key to match the main entity primary key
                $relatedEntity->set($this->foreignKey(), $entity->primaryKey());
            }
        }
        if ($relatedEntity instanceof EntityInterface && ($relatedEntity->isNew() || $relatedEntity->isModified())) {
            $lastResult = $relatedMapper->save($relatedEntity, $options);
        }
        return $lastResult;
    }