/** * 卡牌库列表 * @author gentle */ public function actionIndex() { $data = array(); $data['model'] = CardDb::model(); // FunctionUTL::Debug(User::model()->getScopeDbCriteria());exit; $data['dataTree'] = $this->dataTree(0, 'datasetField/index'); $data['info'] = $this->promptInfo(); $this->render('index', $data); }
/** * 左侧栏树形结构 * @author gentle */ public function dataTree() { $data = array(); $databases = CardDb::model()->findAll(); foreach ($databases as $key => $value) { $data[$key]['text'] = '<span>' . $value->name . '</span>'; $data[$key]['expanded'] = false; $data[$key]['children'] = array(); $datasets = CardDs::model()->findAllByAttributes(array('database_id' => (string) $value->id)); if (empty($datasets)) { continue; } foreach ($datasets as $k => $v) { $data[$key]['children'][$k] = array('text' => '<a href="' . $this->createUrl('/CardDs/Index/id/' . $value->id) . '">' . $v->name . '</a>'); } } return $data; }
/** * 左侧栏树形结构 * @author gentle */ public function dataTree($databaseId = 0, $action = 'cardItem/Index') { $data = array(); $databases = CardDb::model()->findAll(User::model()->getScopeDbCriteria()); foreach ($databases as $key => $value) { $data[$key]['text'] = '<span>' . $value->name . '</span>'; if ($databaseId == $value->id) { $data[$key]['expanded'] = true; } else { $data[$key]['expanded'] = false; } $data[$key]['children'] = array(); $dscriteria = User::model()->getScopeDsCriteria(); $dscriteria->addCond('database_id', '==', (int) $value->id); $datasets = CardDs::model()->findAll($dscriteria); if (empty($datasets)) { continue; } foreach ($datasets as $k => $v) { $data[$key]['children'][$k] = array('text' => '<a href="' . $this->createUrl('/' . $action . '/id/' . $v->id) . '">' . $v->name . '</a>'); } } return $data; }
/** * 根据表名得到真实的表和对应的查询条件 * @param $tname string 待解析表名 * @return 真实表名和条件 */ public function parseRealTable($tname) { $rs = array('name' => $tname, 'criteria' => new EMongoCriteria()); if (preg_match('/^(item_)/i', $tname)) { $tinfo = explode('_', $tname); if (count($tinfo) == 3) { $dbinfo = CardDb::model()->findByAttributes(array('en_name' => $tinfo[1])); if ($dbinfo) { $dsinfo = CardDs::model()->findByAttributes(array('database_id' => $dbinfo->id, 'en_name' => $tinfo[2])); if ($dsinfo) { $rs['name'] = $tinfo[0]; $rs['criteria']->dataset_id = (int) $dsinfo['id']; } } } } return $rs; }
/** * 获取库与实体对应关系表 * @return unknown_type */ public function getDBDSMap() { //添加统一前缀 $cache_key = strtolower('db.admin' . __FUNCTION__); //调用,有缓存则用缓存 if (($map = Yii::app()->cache->get($cache_key)) === false) { $dblist = CardDb::model()->findAll(User::model()->getScopeDbCriteria()); $dslist = CardDs::model()->findAll(User::model()->getScopeDsCriteria()); foreach ($dblist as $dv) { $map[$dv['id']] = array('en_name' => $dv['en_name'], 'name' => $dv['name'], 'list' => array()); } foreach ($dslist as $tv) { if (isset($map[$tv['database_id']])) { $map[$tv['database_id']]['list'][$tv['id']] = array('en_name' => $tv['en_name'], 'name' => $tv['name']); } } if (!Yii::app()->cache->set($cache_key, $map, Yii::app()->params['cache_expire'])) { Yii::log('设置缓存失败:key=' . $cache_key, CLogger::LEVEL_WARNING, 'system.cache'); } } return $map; }
/** * 获取数据库列表 */ public function actionGetDbs() { $return['code'] = 0; $return['data'] = CardDb::model()->getList(); echo CJSON::encode($return); }