Example #1
0
 /**
  * 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));
     }
 }