<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # 模型基類之常用數據處理方法 [TOC] ## 模型中的showReturnCode ~~~ static public function showReturnCode($code = '', $data = [], $msg = ''){ return \app\base\controller\Base::showReturnCode($code, $data, $msg); } static public function showReturnCodeWithOutData($code = '', $msg = '') { return \app\base\controller\Base::showReturnCode($code, [], $msg); } ~~~ ## 模型中的editData 很老的代碼的 懶得改了 湊合用吧 使用方法詳見 http://www.hmoore.net/mikkle/thinkphp5_study/334906 ~~~ /** * 根據有Id修改信息 無Id 新增信息 * #User: Mikkle * #Email:776329498@qq.com * #Date: * @param $data * @return false|int|string * @throws */ public function editData($data){ if (isset($data['id'])){ if (is_numeric($data['id']) && $data['id']>0){ $save = $this->allowField(true)->save($data,[ 'id' => $data['id']]); }else{ $save = $this->allowField(true)->save($data); } }else{ $save = $this->allowField(true)->save($data); } if ( $save == 0 || $save == false) { $res=[ 'code'=> 1009, 'msg' => '數據更新失敗', ]; }else{ $res=[ 'code'=> 1001, 'msg' => '數據更新成功', ]; } return $res; } ~~~ ## 創建個性GUID ~~~ /** * 創建個性GUID * Power by Mikkle * QQ:776329498 * @param string $base_code * @return string */ public function create_uuid($base_code = '') { if (empty($base_code)) { $base_name = basename(str_replace('\\', '/', get_called_class()), '.php'); $uuid_list = ModelCode::$uuid_list; $base_code = isset($uuid_list[$base_name]) ? $uuid_list[$base_name] : 'QT'; } $uuid = $base_code . strtoupper(uniqid()) . $this->builderRand(6); return $uuid; } ~~~ >[info] ModelCode::$uuid_list;中定義了個性前綴 這個代碼寫的比較早了 ,其實 $base_name =$this->name 就能獲取到 ![](https://box.kancloud.cn/f60da94f764f6fc4c3cb0a1e37339389_381x455.png) ## 創建隨機數 ~~~ /** * 創建隨機數 * Power by Mikkle * QQ:776329498 * @param int $num 隨機數位數 * @return string */ public function builderRand($num=8){ return substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, $num); } ~~~ ## 通過查詢條件獲取單條數據對象 ~~~ /** * 通過查詢條件獲取單條數據對象 * Power: Mikkle * Email:776329498@qq.com * @param array $map 查詢條件 * @param bool|true $field 字段 * @param array $append 追加已經定義獲取器字段 * @param bool|true $status * @return $this|array|false|\PDOStatement|string|Model */ public function getInfoByMap($map=[],$field=true,$append=[],$status=true){ if($status&&!isset($map['status'])){ $map['status']=1; } $object = $this->where($map)->field($field)->find(); if(!empty($object)&&!empty($append)){ return $object->append($append); }else{ return $object; } } ~~~ ## 通過查詢條件獲取單條數據(數組) ~~~ /** * 通過查詢條件獲取單條數據(數組) * User: Mikkle * Q Q:776329498 * @param array $map * @param bool|true $field * @param array $append * @param bool|true $status * @return array */ public function getArrayByMap($map=[],$field=true,$append=[],$status=true){ if($status&&!isset($map['status'])){ $map['status']=1; } $object = $this->where($map)->field($field)->find(); if(!empty($object)&&!empty($append)){ $return = $object->append($append); }else{ $return = $object; } return empty($return) ? [] : $return->toArray(); } ~~~ ## 通過查詢條件獲取多條數據(數組) ~~~ /** * Power: Mikkle * Email:776329498@qq.com * @param array $map * @param bool|true $field * @param array $append 這需要在模型里增加獲取器 * @param bool|true $status * @return array */ public function getListByMap($map=[],$field=true,$append=[],$status=true){ if($status&&!isset($map['status'])){ $map['status']=1; } $object_list = $this->where($map)->field($field)->select(); $list=[]; if(!empty($object_list)){ foreach($object_list as $item=>$value){ if(!empty($append)){ $list[]= $value->append($append)->toArray(); }else{ $list[]= $value->toArray(); } } } return $list; } ~~~ ## 有樂觀鎖的快速修改 使用方法 http://www.hmoore.net/mikkle/thinkphp5_study/359349 ~~~ /** * 帶有樂觀鎖的修改 * Power: Mikkle * Email:776329498@qq.com * @param $save_data   修改的數據 * @param string $edit_pk 修改的ID字段名稱 * @param string $version_field  樂觀鎖版本號字段名稱 * @return array */ public function editDateWithLock($save_data,$edit_pk="",$version_field=""){ if (empty($version_field)){ $version_field = isset($this->versionField) ? $this->versionField : "edit_version"; } if (empty($edit_pk)){ $edit_pk = isset($this->editPk) ? $this->editPk : $this->getPk(); } //判斷PK字段是否存在 if (!isset($save_data[$edit_pk])||!isset($save_data[$version_field])){ return self::showReturnCodeWithOutData(1003,"參數缺失"); }else{ //設置升級檢索條件 PK和版本號 $map[$edit_pk] = $save_data[$edit_pk]; $map[$version_field] = $save_data[$version_field]; //剔除PK unset($save_data[$edit_pk]); } try{ //檢測版本字段 if($this->hasColumn($version_field)){ throw new Exception("樂觀鎖版本字段[$version_field]不存在"); } $original_data = $this->where($map)->find(); if (empty($original_data)){ throw new Exception("此條信息已經變動了,請重新操作!"); } foreach ($save_data as $item=>$value){ if (isset($original_data[$item])){ //修改的數值不變時候 剔除 if ($original_data[$item]==$value){ unset( $save_data[$item]); }elseif($item!=$version_field){ unset( $original_data[$item]); } }else{ //修改的字段不存在 剔除 unset( $save_data[$item]); } } if(empty($save_data)){ throw new Exception("修改的數值無變化"); } //版本號升級 $save_data[$version_field]=(int)$original_data[$version_field]+1; if (1!=$this->allowField(true)->save($save_data,$map)){ throw new Exception("修改信息出錯:".$this->getError()); } //記錄修改日志 $this->saveEditLog($original_data,$save_data); return self::showReturnCodeWithOutData(1001); }catch (Exception $e){ $msg=$e->getMessage(); return self::showReturnCodeWithOutData(1003,$msg); } } ~~~ ## 判斷字段是否存在 ~~~ /** * 判斷字段是否存在 * Power: Mikkle * Email:776329498@qq.com * @param $column * @param string $table * @return bool */ protected function hasColumn($column,$table=""){ $table = isset($table)?$table:$this->table; if (empty($table)||$column){ $this->error="hasColumn方法參數缺失"; return false; } $sql = "SELECT * FROM information_schema.columns WHERE table_schema=CurrentDatabase AND table_name = '{$table}' AND column_name = '{$column}'"; return $this->query($sql) ? true : false; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看