как получить данные перед beforeSave ()

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

Так что администратор может видеть новые данные и старые данные (чтобы вести учет старых и новых значений)

для этого я использую 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 он возвращает мне новое значение (новое имя).
но как я могу получить доступ к старым данным (старое имя), чтобы я мог сохранить их в другую таблицу перед обновлением.

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

0

Решение

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

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector