/**
  * @return CArrayList
  */
 public function getFields()
 {
     if (is_null(self::$_fields)) {
         self::$_fields = new CArrayList();
     }
     if (!self::$_fields->hasElement($this->name)) {
         $fields = new CArrayList();
         $query = new CQuery();
         $query->query("DESCRIBE " . $this->name);
         foreach ($query->execute()->getItems() as $field) {
             $fields->add($field["Field"], new CDbTableField($field));
         }
         self::$_fields->add($this->name, $fields);
     }
     return self::$_fields->getItem($this->name);
 }