/** * Lists all schemata. */ public function actionList() { // Create list for sideBar usage if ($this->request->getParam('sideBar')) { $schemata = array(); foreach (Schema::model()->findAll() as $schema) { $schemata[] = $schema->SCHEMA_NAME; } $this->sendJSON($schemata); } else { $criteria = new CDbCriteria(); // Pagination $pages = new Pagination(Schema::model()->count($criteria)); $pages->setupPageSize('pageSize', 'schemata'); $pages->applyLimit($criteria); $pages->route = '#schemata'; // Sort $sort = new CSort('Schema'); $sort->attributes = array('name' => 'SCHEMA_NAME', 'tableCount' => 'tableCount', 'collation' => 'DEFAULT_COLLATION_NAME'); $sort->defaultOrder = 'SCHEMA_NAME ASC'; $sort->route = '#schemata'; $sort->applyOrder($criteria); $criteria->group = 'SCHEMA_NAME'; $criteria->select = 'SCHEMA_NAME, DEFAULT_COLLATION_NAME, COUNT(*) AS tableCount'; $schemaList = Schema::model()->with(array('tables' => array('select' => 'COUNT(tables.TABLE_NAME) AS tableCount')))->together()->findAll($criteria); $this->render('list', array('schemaList' => $schemaList, 'schemaCount' => $pages->getItemCount(), 'schemaCountThisPage' => min($pages->getPageSize(), $pages->getItemCount() - $pages->getCurrentPage() * $pages->getPageSize()), 'pages' => $pages, 'sort' => $sort)); } }