thinkphp5.0、5.1,insertAll 插入oracle时间被过滤问题,修改框架驱动

thinkphp5.0、5.1,insertAll 插入oracle时间被过滤问题,修改框架驱动

修改db\Builder.php

public function insertAll($dataSet, $options = [], $replace = false)
{
    // 获取合法的字段
    if ('*' == $options['field']) {
        $fields = array_keys($this->query->getFieldsType($options['table']));
    } else {
        $fields = $options['field'];
    }

    foreach ($dataSet as &$data) {
        foreach ($data as $key => $val) {
            if (!in_array($key, $fields, true)) {
                if ($options['strict']) {
                    throw new Exception('fields not exists:[' . $key . ']');
                }
                unset($data[$key]);
            } elseif (is_null($val)) {
                $data[$key] = 'NULL';
            } elseif (is_scalar($val)) {
                $data[$key] = $this->parseValue($val, $key);
            } elseif (is_object($val) && method_exists($val, '__toString')) {
                // 对象数据写入
                $data[$key] = $val->__toString();
            } elseif (isset($val[0]) && 'exp' == $val[0]) {
                $data[$key] = $val[1];
            } else{
                unset($data[$key])
            }
        }
        $value = array_values($data);
        $values[] = 'SELECT ' . implode(',', $value) . 'FROM DUAL';
    }
    $fields = array_map([$this, 'parseKey'], array_keys(reset($dataSet)));
    $sql = str_replace(
        ['%INSERT%', '%TABLE%', '%FIELD%', '%DATA%', '%COMMENT%'],
        [
            $replace ? 'REPLACE' : 'INSERT',
            $this->parseTable($options['table'], $options),
            implode(' , ', $fields),
            implode(' UNION ALL ', $values),
            $this->parseComment($options['comment']),
        ], $this->insertAllSql);
    return $sql;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值