41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Common\Behaviors;
 | 
						|
 | 
						|
use yii\base\Event;
 | 
						|
use yii\db\ActiveRecord;
 | 
						|
use yii\base\Behavior;
 | 
						|
 | 
						|
class LogBehavior extends Behavior
 | 
						|
{
 | 
						|
    public function events()
 | 
						|
    {
 | 
						|
        return[
 | 
						|
            ActiveRecord::EVENT_BEFORE_UPDATE => 'beforeUpdate',
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    public function beforeUpdate(Event $event)
 | 
						|
    {
 | 
						|
        $model = $event->sender;
 | 
						|
        $dirtyAttributes = $model->getDirtyAttributes();
 | 
						|
 | 
						|
        foreach ($dirtyAttributes as $key => $value)
 | 
						|
        {
 | 
						|
            if($model->getOldAttribute($key) == $value)
 | 
						|
            {
 | 
						|
                continue;
 | 
						|
            }
 | 
						|
            $change = new \common\models\ChangeHistory([
 | 
						|
                'type' => get_class($model),
 | 
						|
                'type_id' => $model->getAttribute('id'),
 | 
						|
                'field_name' => $key,
 | 
						|
                'label' => $model->getAttributeLabel($key),
 | 
						|
                'old_value' => $model->getOldAttribute($key),
 | 
						|
                'new_value' => $value,
 | 
						|
                'created_at' => date('Y-m-d-H:i:s', time()),
 | 
						|
            ]);
 | 
						|
            $change->save();
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |