2016-11-05 3 views
2

Я хочу динамически вставлять таблицу в codeigniter, передавая имя таблицы в качестве параметра. ниже моя функция контроллера для вызова функций моделиКак динамически вставить таблицу в codeigniter?

function index(){ 
$table=array('branch'=>'branch_id','specialization'=>'spec_branch_id'); 
$this->model->join($table); 
} 

и это моя модель функция

function join($table){ 

    foreach($table as $table_name=>$table_id){ 
     /*i want here table*/  
     $table1=$table_name; 
    } 
    $this->db->select('*'); 
    $this->db->from(''.$table1.' t1'); 
    $this->db->join(''.$table2.' t2','t1.'.$t1id.'=t2.'.$t2id); 

    return $this->db->get(); 

    echo $this->db->last_query();die; 
} 

Как и в приведенном выше функциях я хочу динамическое имя таблицы, как table1 = ветвь; table2 = specializaton в моей функции модели, поэтому, пожалуйста, помогите мне решить, и если кто-то другой может поделиться.

ответ

4

вот мой пользовательский код динамически соединяется.

вид форма.

<?php public function commonGet($options) { 

      $select = false; 
      $table = false; 
      $join = false; 
      $order = false; 
      $limit = false; 
      $offset = false; 
      $where = false; 
      $or_where = false; 
      $single = false; 
      $where_not_in = false; 
      $like = false; 

      extract($options); 

      if ($select != false) 
       $this->db->select($select); 

      if ($table != false) 
       $this->db->from($table); 

      if ($where != false) 
       $this->db->where($where); 

      if ($where_not_in != false) { 
       foreach ($where_not_in as $key => $value) { 
        if (count($value) > 0) 
         $this->db->where_not_in($key, $value); 
       } 
      } 

      if ($like != false) { 
       $this->db->like($like); 
      } 

      if ($or_where != false) 
       $this->db->or_where($or_where); 

      if ($limit != false) { 

       if (!is_array($limit)) { 
        $this->db->limit($limit); 
       } else { 
        foreach ($limit as $limitval => $offset) { 
         $this->db->limit($limitval, $offset); 
        } 
       } 
      } 


      if ($order != false) { 

       foreach ($order as $key => $value) { 

        if (is_array($value)) { 
         foreach ($order as $orderby => $orderval) { 
          $this->db->order_by($orderby, $orderval); 
         } 
        } else { 
         $this->db->order_by($key, $value); 
        } 
       } 
      } 


      if ($join != false) { 

       foreach ($join as $key => $value) { 

        if (is_array($value)) { 

         if (count($value) == 3) { 
          $this->db->join($value[0], $value[1], $value[2]); 
         } else { 
          foreach ($value as $key1 => $value1) { 
           $this->db->join($key1, $value1); 
          } 
         } 
        } else { 
         $this->db->join($key, $value); 
        } 
       } 
      } 


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

      if ($single) { 
       return $query->row(); 
      } 


      return $query->result(); 
     } ?> 

и индекс просмотра страницы

<?php function index(){ 

    $option = array(
    'table' => 't1', 
    'join' => array('t2' => 't2.id = t1.id') 
    ); 
    $this->model->commonGet($option); 
    }?> 
+1

спасибо @pawan сена –

0

Вы можете попробовать этот код также два соединения таблиц.

Функция контроллера.

function index(){   
$table=array('branch'=>'branch_id','specialization'=>'spec_branch_id'); 
$this->model->join($table); 
} 

функция Модель

function join($tables){ 
$i=1; 
foreach($tables as $table_name=>$table_id){ 
    ${'table'.$i}=$table_name; 
    ${'t'.$i.'id'}=$table_id; 
    $i++; 
} 

$this->db->select('*'); 
$this->db->from(''.$table1.' t1'); 
$this->db->join(''.$table2.' t2','t1.'.$t1id.'=t2.'.$t2id); 

//$this->output->enable_profiler(TRUE); 
return $this->db->get();   
} 
Смежные вопросы