コード例 #1
0
ファイル: core.php プロジェクト: rcapp/kohana-jelly
 /**
  * Choose the columns to select from, using an array.
  *
  * @param   array  list of column names or aliases
  * @return  $this
  */
 public function select_array(array $columns)
 {
     foreach ($columns as $i => $column) {
         if (is_array($column)) {
             $columns[$i][0] = $this->_column($column[0], TRUE);
         } else {
             // Check for * and model.*
             if (FALSE !== strpos($column, '*')) {
                 $meta = $this->_meta;
                 if ($column != '*') {
                     $meta = explode('.', $column);
                     $meta = Jelly::meta($meta[0]);
                 }
                 // Can we continue? Only if there's a valid meta object
                 if ($meta) {
                     $add_columns = array();
                     foreach ($meta->fields() as $field) {
                         if ($field->in_db) {
                             $add_columns[] = array($meta->table() . '.' . $field->column, $field->name);
                         } else {
                             if ($field->column instanceof Database_Expression) {
                                 $add_columns[] = array($field->column, $field->name);
                             }
                         }
                     }
                     // Add these columns before we continue
                     parent::select_array($add_columns);
                     // Remove the item we just added. It's no longer valid
                     unset($columns[$i]);
                     continue;
                 }
             }
             $columns[$i] = $this->_column($column, TRUE);
         }
     }
     return parent::select_array($columns);
 }