Answer the question
In order to leave comments, you need to log in
What is the best way to organize document versioning in yii2?
Необходимо сделать возможность "отката" документов в системе и просмотра версий изменений.
В приложении есть несколько сущностей (моделей и таблиц), у которых надо сохранять версии после редактирования (к примеру "новости" и "статьи").
Сейчас видится два варианта.
Первый - тупо делать в текущей таблицы копию записи и ставить у неё флаг типа notshow. Вариант простой, всё решается в пределах одной модели и контроллера, но не нравится то, что таблица будет сильно распухать от большого кол-ва версий. И всякие поиски будут тормозить (расчёт идёт на несколько миллионов "оригинальных" записей, т.е. с версиями это всё может увеличиться еще в десятки раз).
Второй - сделать вторую модель с таблицей, которые будут копировать почти весь функционал оригинальной модели, за исключением условного поля original_id, которое будет ссылать на запись в оригинальной таблице. В этом варианте не нравится куча кода, который будет дублировать код из оригинальной модели.
Answer the question
In order to leave comments, you need to log in
Naturally it is necessary to do the second table.
And a new model to inherit from the first. Learn OOP and you will be happy.
Example:
// Usual model for working with a normal table
class News extend ActiveRecord
{
public static function indexName()
{
return '{{%news}}';
}
}
// Model for working with archives
class ArchiveNews extend News
{
public static function indexName()
{
return '{{%archive_news}}';
}
}
Naturally, all functionality of the News model will be available and valid for ArchiveNews. It remains only to rewrite / expand some methods to work with the new 'original_id' field somewhere.
В частности правила и лейблы.
Написано только что
В WordPress используется первый вариант.
Вполне себе рабочий и удобный.
Второй мне кажется сложнее + могут вылезти какие-то неудобства в процессе.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question