Как доработать проверку?
Жаль что автор не представляет сколько ему ещё предстоит пройти пути, чтобы в итоге написать вменяемый ActiveRecord класс.
Но для понимания масштабов, могу посоветовать ознакомиться с таковым, например в Yii2 - 

$changedAttributes
https://github.com/yiisoft/yii2/blob/5ee7fabbf948f...

Там есть все ответы и на текущий вопрос, и на вчерашний про магию __set и на все будущие.

По существу вопроса, изучите класс в частности места где встречается строчка _oldAttributes, changedAttributes, dirtyAttributes
private $data = [];
private $save = [];
public function __set($name, $value)
{
    if ($this->{$name}) {
        $this->save[$name] = $value;
    } else {
        $this->data[$name] = $value;
    }
}

public function save()
{
    $par = [];
    $val = [];
    foreach ($this->id ? $this->save : $this->data as $k => $v) {
        $par[] = $k . ' = ?';
        $val[] = $v;
    }
    if ($this->id) {
        Db::query('update ' . static::table() . ' set ' . implode(', ', $par) . ' where id = ' . $this->id, $val, static::class);
    } else {
        Db::query('insert into ' . static::table() . ' set ' . implode(', ', $par), $val, static::class);
        $this->id = Db::lastInsertId();
    }
}
Гори оно гаром.