как получить данные до того, как перед сохранением ()

В моей системе мне нужна возможность всегда копировать старую запись в другую таблицу до того, как фактическая таблица получит обновление.

Чтобы администратор мог видеть как новые данные, так и старые данные (для ведения записи старых и новых значений).

для этого я использую метод beforeSave()

public function beforeSave($insert)
    {
        if (!parent::beforeSave($insert)) {
            return false;
        }

        echo "<pre>before save";print_R($this);die();
        return true;
    }

в случае обновления я заметил, что $this возвращает как старые, так и новые записи

$this содержит:

 app\models\Visitor Object (
     [_attributes:yii\db\BaseActiveRecord:private] => Array
         (
             [id] => 1
             [first_name] => new first name
             [last_name] => new last name
             [phone] => 987654321
             [created_at] => 0000-00-00 00:00:00
             [updated_at] => 0000-00-00 00:00:00
         )

     [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
         (
             [id] => 1
             [first_name] => old first name
             [last_name] => old last name
             [phone] => 123456789
             [created_at] => 0000-00-00 00:00:00
             [updated_at] => 0000-00-00 00:00:00
         )

     [_related:yii\db\BaseActiveRecord:private] => Array
         (
         )

если я использую $this->first_name, он возвращает мне новое значение (новое имя). но как мне получить доступ к старым данным (старое имя), чтобы я мог сохранить их в другой таблице перед обновлением.

Или любое другое предложение для достижения этого полезно.


person Paritosh Mahale    schedule 22.03.2018    source источник


Ответы (1)


Вы можете использовать метод $this->getOldAttribute($name), где имя — это имя атрибута, значение которого вы хотите получить.

Также есть метод $this->getOldAttributes(), который возвращает массив со старыми значениями атрибутов (парами имя-значение).

person Liauchuk Ivan    schedule 22.03.2018
comment
$this->getOldAttributes() не поддерживается в yii2 ? - person Moeez; 07.08.2020