thinkphp5使用mongo进行$addToSet更新时报错

浏览:275 发布日期:2017/09/14
5.0.0 - 严重 - 已处理
执行以下语句时        $rs=Db::table('test')->where('_id',getObjectId('59ba18e030dd9114d00056a2'))
            ->update(['test'=> [
                '$addtoset',[
                        'id'=>getObjectId('59a37f7bef887a1d58b59f51'),
                        'test'=>true
                    ]]]);
会报这个错:
Unknown modifier: $addtoset

检查代码,发现\vendor\topthink\think-mongo\src\Builder.php里有这个代码    protected function parseSet($data, $options)
    {
        if (empty($data)) {
            return [];
        }

        $result = [];
        foreach ($data as $key => $val) {
            $item = $this->parseKey($key);
            if (is_array($val) && isset($val[0]) && in_array($val[0], ['$inc', '$set', '$unset', '$push', '$pushall', '$addtoset', '$pop', '$pull', '$pullall'])) {
                $result[$val[0]][$item] = $this->parseValue($val[1], $key);
            } else {
                $result['$set'][$item] = $this->parseValue($val, $key);
            }
        }
        return $result;
    }
这里in_array($val[0], ['$inc', '$set', '$unset', '$push', '$pushall', '$addtoset', '$pop', '$pull', '$pullall'])里的'$addtoset'是否应该改为$addToSet??
评论(
后面还有条评论,点击查看>>