예제 #1
0
 /**
  * 保存数据,包括更新与插入
  *
  * @param array       $attr 需要插入或更新的数据
  * @param bool|object $o    如果是更新,需要提供当前更新的对象
  * @param string      $modelName
  *
  * @return array
  * @throws \Exception
  */
 static function dataSave($attr, $o = false, $modelName = '')
 {
     try {
         if ($o) {
             // 更新
             self::$nowModel = $o;
             self::$isNew = false;
         } else {
             // 插入
             self::$isNew = true;
             if (version_compare(PHP_VERSION, '5.5.0', '>')) {
                 //$staticClass = static::class; //5.5以后的版本可以支持这种写法
                 $staticClass = self::checkModelName($modelName);
                 if (!$staticClass) {
                     throw new Exception('DataSave Error!');
                 }
             } else {
                 if ($modelName) {
                     $staticClass = self::checkModelName($modelName);
                     if (!$staticClass) {
                         throw new Exception('DataSave Error!');
                     }
                 } else {
                     throw new Exception('DataSave Error!');
                 }
             }
             self::$nowModel = new $staticClass();
         }
         if (self::$nowModel->save($attr) == false) {
             return self::$nowModel;
         }
     } catch (\PDOException $e) {
         throw new \Exception('Db Failed Error: ' . $e->getMessage());
         Di::getDefault()->get('flash')->clear();
         Di::getDefault()->get('flash')->error('DB Failed 数据操作发生异常');
         return false;
     }
     self::dataSaveUpdateStatistics($attr);
     return true;
 }