<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ``` $model::getList($where, $this->pageSize, ['date_year'=>"desc",$orderByColumn => $isAsc,"subject"=>'desc']); ``` $this->pageSize:控制器初始化時獲取pageSize參數,不存在加載配置文件的 getList==》getList==》changeTableData ## **getList** getList返回的時當前模型組裝為表格所需的的數據集,下一步就是將數據級轉換為數組并且轉時間格式等 ``` // 獲取列表 public static function getList(array $where = [], int $pageSize = 0, array $order = ['sort', 'id' => 'desc']) { $model = new static(); $model = $model->alias($model->getName()); // 獲取with關聯 $moduleId = \app\common\model\Module::where('model_name', $model->getName())->value('id');//當前運行模型的id $fileds = \app\common\model\Field::where('module_id', $moduleId) ->select() ->toArray();//查出當前運行模型對應數據表的字段信息 $listInfo = []; // 字段根據關聯信息重新賦值 $withInfo = []; // 模型關聯信息 $fieldInfo = []; // 字段包含.的時候從關聯模型中獲取數據 foreach ($fileds as $filed) { // 數據源為模型數據時設置關聯信息 if ($filed['data_source'] == 2) {//字段管理-數據源-模型數據 0是字段本身,1是系統字典 $listInfo[] = [ 'field' => $filed['field'], 'relation_model' => lcfirst($filed['relation_model']),//字段管理-關聯模型 'relation_field' => $filed['relation_field'],//字段管理-關聯字段 ]; $withInfo[] = lcfirst($filed['relation_model']);//字段管理-關聯模型存在則 $withInfo } // 字段包含.的時候從關聯模型中獲取數據 if (strpos($filed['field'], '.') !== false) { $filedArr = explode('.', $filed['field']); $fieldInfo[] = [ 'field' => $filed['field'], 'relation_model' => lcfirst($filedArr[0]), 'relation_field' => $filedArr[1], ]; } } if ($withInfo) {//字段管理-關聯模型存在則with關聯模型 $model = $model->with($withInfo); } if ($where) { $whereNew = []; $whereHas = []; foreach ($where as $v) { if (strpos($v[0], '.') === false) { $whereNew[] = $v; } else { // 關聯模型搜索 $filedArr = explode('.', $v[0]); $whereHas[lcfirst($filedArr[0])][] = [ 'field' => $filedArr[1], 'field_option' => $v[1], 'field_value' => $v[2], ]; } } // 關聯模型搜索 if ($whereHas) { foreach ($whereHas as $k => $v) { $model = $model->hasWhere($k, function ($query) use ($v) { foreach ($v as $vv) { $query->where($vv['field'], $vv['field_option'], $vv['field_value']); } }); } } // 當前模型搜索 if ($whereNew) { $model = $model->where($where); } } if ($pageSize) {//傳入pageSize參數則執行tp分頁方法 $list = $model->order($order) ->paginate([ 'query' => Request::get(), 'list_rows' => $pageSize, ]); } else { $list = $model->order($order) ->select(); } foreach ($list as $v) { foreach ($listInfo as $vv) { $v[$vv['field']] = !empty($v->{$vv['relation_model']}) ? $v->{$vv['relation_model']}->getData($vv['relation_field']) : ''; } foreach ($fieldInfo as $vv) { $v[$vv['field']] = !empty($v->{$vv['relation_model']}) ? $v->{$vv['relation_model']}->getData($vv['relation_field']) : ''; } } return MakeBuilder::changeTableData($list, $model->getName()); } ``` 由于使用了paginate,list返回的是Paginator對象,`object(think\paginator\driver\Bootstrap)#589 (8) ...` Paginator對象還附帶返回per_page等等 $list->toArray();結果: ``` array(5) { ["total"]=> int(65) ["per_page"]=> int(99) ["current_page"]=> int(1) ["last_page"]=> int(1) ["data"]=> array(65) { [0]=> array(22) { ["id"]=> int(56) ["create_time"]=> string(19) "2021-09-25 07:52:07" 。。。 ``` >[danger] 此cms的表格的數據只需要total和data組成的數據 `per_page`這些參數都是tp pagenate方法冗余的 此cms封裝了bootstraptable的responseHandler參數來處理后臺數據以適應bootstraptable ``` responseHandler: function(res) { if (typeof $.table._option.responseHandler == "function") { $.table._option.responseHandler(res); } return { rows: res.data, total: res.total }; }, ``` ## **changeTableData:tableData轉化為bootstrap需要的數據格式** ``` /** * 列表展示時改變為需要的格式[日期、時間、日期時間] * @param $tableData * @param string $modelName * @return mixed */ public function changeTableData($tableData, string $modelName) { // 轉換為數組[注意是否分頁] $tableData = is_array($tableData) ? $tableData : $tableData->toArray(); if (array_key_exists('total', $tableData) && array_key_exists('per_page', $tableData)) { $page = true; $data = $tableData['data']; } else { $page = false; $data = $tableData; } // 查詢模塊信息 $module = \app\common\model\Module::where('model_name', $modelName)->find(); // 查詢字段信息 $fields = self::getFields($module->table_name); if (empty($fields)) { return $tableData; } $fieldsNew = []; foreach ($fields as $k => $v) { $fieldsNew[$v['field']] = $v; } foreach ($data as $k => $v) { foreach ($fieldsNew as $kk => $vv) { // 只對列表中出現的字段做處理,添加時間和修改時間不做處理 if (array_key_exists($kk, $v) && $kk != 'create_time' && $kk != 'update_time') { // 改變日期等格式 if ($vv['type'] == 'date' || $vv['type'] == 'time' || $vv['type'] == 'datetime') { // 使用每個字段設定的格式 if ($vv['type'] == 'time') { $format = $vv['setup']['format'] ?: 'H:i:s'; } else { $format = $vv['setup']['format'] ?: 'Y-m-d H:i:s'; } $data[$k][$kk] = $data[$k][$kk] === 0 ? '' : date($format, $data[$k][$kk]); } } } } $page == true ? $tableData['data'] = $data : $tableData = $data;; return $tableData; } ```
                  <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>

                              哎呀哎呀视频在线观看