Controller_Data_SQL::save PHP Метод

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

public save ( $model, $id, $data )
    public function save($model, $id, $data)
    {
        $dsql = $this->getDsqlForSave($model);
        foreach ($data as $key => $value) {
            $field = $model->getElement($key);
            $fieldTable = $field->table();
            // I set the value only for the current model table.
            // The other values'll be save by field sql relation
            if ($model->isDirty($key) && $field && (is_null($fieldTable) || $fieldTable === $model->table_alias)) {
                $dsql->set($field->actual() ?: $key, $field->sanitize($value));
            }
        }
        if (empty($dsql->args['set'])) {
            return $id;
            // is it correct?
        }
        $this->app->db->beginTransaction();
        if (is_null($id)) {
            $id = $dsql->insert();
        } else {
            $dsql->where($model->id_field, $id);
            $dsql->update();
            // uniform atk's bug
            $id = '' . ($data[$model->id_field] ?: $id);
            if (isset($data[$model->id_field])) {
                $model->data[$model->id_field] = $id;
            }
        }
        //$id = '' . $id;
        $dsql->stmt = null;
        $model->tryLoad($id);
        if ($model->loaded()) {
            $this->app->db->commit();
        } else {
            $this->app->db->rollback();
            throw $model->exception('Record with specified id was not found');
        }
        return $id;
    }