如何从 beforeSave() 之前获取数据
how to get data from before beforeSave()
在我的系统中,我想要一个工具,它应该总是在实际 table 获得更新之前将旧记录复制到另一个 table。
以便管理员也可以看到新数据和旧数据(以维护新旧值的记录)
为此我使用beforeSave()
方法
public function beforeSave($insert)
{
if (!parent::beforeSave($insert)) {
return false;
}
echo "<pre>before save";print_R($this);die();
return true;
}
在更新案例中,我注意到 $this
return 旧记录和新记录
$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
它 return 我的新值(新名字)。
但是我如何访问旧数据(旧名字)以便我可以在更新之前将其保存到另一个table。
或实现此目的的任何其他建议都有帮助。
您可以使用方法 $this->getOldAttribute($name)
,其中名称是您要获取值的属性的名称。
还有方法 $this->getOldAttributes()
,其中 return 数组具有旧属性值(name-value 对)。
在我的系统中,我想要一个工具,它应该总是在实际 table 获得更新之前将旧记录复制到另一个 table。
以便管理员也可以看到新数据和旧数据(以维护新旧值的记录)
为此我使用beforeSave()
方法
public function beforeSave($insert)
{
if (!parent::beforeSave($insert)) {
return false;
}
echo "<pre>before save";print_R($this);die();
return true;
}
在更新案例中,我注意到 $this
return 旧记录和新记录
$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
它 return 我的新值(新名字)。
但是我如何访问旧数据(旧名字)以便我可以在更新之前将其保存到另一个table。
或实现此目的的任何其他建议都有帮助。
您可以使用方法 $this->getOldAttribute($name)
,其中名称是您要获取值的属性的名称。
还有方法 $this->getOldAttributes()
,其中 return 数组具有旧属性值(name-value 对)。