解决laravel-auditing 日志记录转义的问题

阅读源码找到获取old_valuenew_value的地方

protected function getUpdatedEventAttributes(): array
    {
        $old = [];
        $new = [];

        foreach ($this->getDirty() as $attribute => $value) {
            if ($this->isAttributeAuditable($attribute)) {
                $old[$attribute] = Arr::get($this->original, $attribute);
                $new[$attribute] = Arr::get($this->attributes, $attribute);
            }
        }

        return [
            $old,
            $new,
        ];
    }

直接看$new[$attribute] = Arr::get($this->attributes, $attribute);这一行

其实不算是个bug吧,阅读laravel的源码你可以知道在数据里有引号斜杆之类的字符串时laravel取的时候会自动转义
$this->attributes 取出来的值已经被转义
所以只需要改一下 $this->attributes 让它不转义就行 
改的方法有很多种 最简单的是用 $this->toArray() 替换 $this->attributes

知道原理后所以自己实现一个getUpdatedEventAttributes方法就行

/**
     * 处理 OwenIt\Auditing 转义的问题
     *
     * @return array
     */
    protected function getUpdatedEventAttributes(): array
    {
        $old = [];
        $new = [];

        foreach ($this->getDirty() as $attribute => $value) {
            if ($this->isAttributeAuditable($attribute)) {
                $old[$attribute] = Arr::get($this->original, $attribute);
                $new[$attribute] = Arr::get($this->toArray(), $attribute);
            }
        }

        return [
            $old,
            $new,
        ];
    }