src/articles/classes/Entity/Article.php
public function beforeSave(ezcQuery $query)
    {
        $query = parent::beforeSave($query);

        /*
         * Если это новая статья — вычисляем новый порядковый номер
         */
        if ($query instanceof ezcQueryInsert)
        {
            $q = $this->getTable()->createSelectQuery(false);
            $q->select('*');
            $e = $q->expr;
            $q->where($e->eq('section', $q->bindValue($this->section, null, PDO::PARAM_INT)));
            $q->orderBy('position', $q::DESC);
            /** @var self $max */
            $max = $this->getTable()->loadOneFromQuery($q);
            $query->set('position',
                $query->bindValue($max->position + 1, ":position", PDO::PARAM_INT));
            /*
             * Обновляем краткое описание, если надо
             */
            if (!$this->preview)
            {
                $this->createPreviewFromText();
                /** @var ezcQueryInsert|ezcQueryUpdate $query */
                $query->set('preview', $query->bindValue($this->preview, ':preview'));
            }
        }

        return $query;
    }
public function beforeSave(ezcQuery $query)
    {
        $query = parent::beforeSave($query);

        /*
         * Если это новая статья — вычисляем новый порядковый номер
         */
        if ($query instanceof ezcQueryInsert)
        {
            $q = $this->getTable()->createSelectQuery(false);
            $q->select('*');
            $e = $q->expr;
            $q->where($e->eq('section', $q->bindValue($this->section, null, PDO::PARAM_INT)));
            $q->orderBy('position', $q::DESC);
            /** @var self $max */
            $max = $this->getTable()->loadOneFromQuery($q);
            $query->set('position',
                $query->bindValue($max->position + 1, ":position", PDO::PARAM_INT));
            /*
             * Обновляем краткое описание, если надо
             */
            if (!$this->preview)
            {
                $this->createPreviewFromText();
                /** @var ezcQueryInsert|ezcQueryUpdate $query */
                $query->set('preview', $query->bindValue($this->preview, ':preview'));
            }
        }

        return $query;
    }
Действия перед сохранением объекта в БД

@param ezcQuery $query

@return ezcQuery

@since 3.01