public function diff($base, $new, $mode = self::DIFF_ALL, array $field_ids = array())
    {
        $res = parent::diff($base, $new, $mode, $field_ids);

        // For update, be careful to ignore the ID if it's the only difference
        foreach ($res[self::UPDATE] as $key => $data) {
            $fields = $data[self::MODIFIED];
            if (count($fields) === 1 && array_key_exists('id', $fields)) {
                unset($res[self::UPDATE][$key]);
            }
        }

        return $res;
    }