Database Wrapper Function codeigniter

C

Ch

Hallo,

ich habe mir mal eine Wrapper Funktion für die Codeigniter Database Klasse gebaut. Die funktioniert auch und wird per autoload als Standard Model geladen. Sinn war es den Code schmal zu halten und eine Funktion mit Nachhaltigkeit zu programmieren.

Meine Frage ist, habe ich da jetzt noch was vergessen oder kann man was verbessern? Es wurde bewußt auf MYSQL Funktionen verzichtet.

PHP:
public function get($prefix, $table = NULL, $where = NULL, $select_fields = NULL, $arguments = NULL, $return_type = 'row')
{                
   if( !empty($prefix) )
   {
      $table = $prefix.'_'.$table;
    }

    if( empty($table ) ) return FALSE ;

    if( is_array( $where ) ) { $this->db->where($where) ;}

    if( is_array($arguments) )
    {
       if( array_key_exists('limit', $arguments) && array_key_exists('offset', $arguments) )
       {
          $this->db->limit( $arguments['limit'], $arguments['offset'] );
       }
       else if( array_key_exists('limit', $arguments) && ! array_key_exists('offset', $arguments) )
       {
          $this->db->limit( $arguments['limit'] );
       }

       if( array_key_exists('order_by', $arguments) && array_key_exists('order', $arguments) )
       {
          $this->db->order_by( $arguments['order_by'], $arguments['order'] );
       }

       if( array_key_exists('group_by', $arguments))
       {
          $this->db->group_by( $arguments['group_by'] );
       }

       if( array_key_exists('join_arr', $arguments) && is_array($arguments['join_arr']) )
       {
          foreach($arguments['join_arr'] as $join_table => $fields)
          {
              $join_meta = explode('|', $fields);
              $join_type = ( array_key_exists(3, $join_meta) ) ? $join_meta[3] : 'LEFT' ;
              $this->db->join($join_table, $join_meta[0].'.'.$join_meta[1].'='.$join_table.'.'.$join_meta[2], $join_type );
          }
       }
     }

     if( $select_fields != NULL && is_array($select_fields) )
     {
        $fields = array();

        foreach($select_fields as $fieldname)
        {
            $fields[] = $fieldname;
        }

        $this->db->select( implode(', ', $fields) );
     }

     $query = $this->db->get($table);

     if($query->num_rows() > 0)
     {
         switch( $return_type )
         {
            case 'row':
               return $query->row();
            break;

            case 'row_array':
               return $query->row_array();
            break;

            case 'result':
               return $query->result();
            break;

            case 'result_array':
               return $query->result_array();
            break;

            default:
               return $query->row();
            break;
         }
      }
      else
      {
         return FALSE;
       }                
}

EXAMPLE usage:
PHP:
$arguments = array( 'join_arr' => array('table1'=>'table2|table1_id|table2_id') );
                
   $select_fields = array('field1', 'field2');

    $where         = array('table1.field3' => $was_auch_immer );
    return $this->my_model->get($prefix, $table, $where, $select_fields, $arguments );
 
Zuletzt bearbeitet von einem Moderator:
Zurück