2014-01-09 15 views
2

我使用點火表,我想在一列中結合2場結果。Codeigniter點火表結合2個查詢字段結果在一列

$this->datatables 
      ->select('ci_orders.id,' 
        .'ci_orders.transaction_id,' 
        .'ci_orders.field1,' 
        .'ci_orders.field2,' 
        .'ci_orders.status') 
      ->from('ci_orders') 
      ->join('ci_users', 'ci_orders.user = ci_users.id') 
      ->where('ci_users.id',$userId) 
      ->unset_column('ci_orders.id') 
      ->add_column('edit', '<a href="' . base_url() . 'cancel_order/$1"><button class="btn btn-danger" type="button"><i class="fa fa-times-circle"></i> Cancel</button>', 'id'); 

與此查詢我會像

---transaction_id---|---field_header1---|---field_header2---|---status--- 
    some id   | value1   | value2   | pending 

一個表,我想什麼來實現

---transaction_id---|---field_header---|---status--- 
    some id   | value1/value2 | pending 

被點燃表ablle來處理呢?

+1

你知道你不必使用CI自帶的AR lib,對不對?如果你想做一些複雜的事情,你可以編寫自己的SQL。另外,unset_column和add_column在哪裏定義?那些不存在於Database類的文檔中,它們是DBForge庫的一部分(至少add_column) – Zarathuztra

+0

unset_column是Datatable庫的一個方法https://github.com/IgnitedDatatables/Ignited-Datatables/ – fefe

+0

將是重要的信息。 – Zarathuztra

回答

3

雖然在Ignited-Datatables/application/libraries/Datatables.php查看代碼,我發現它實際使用CodeIgniter的積極庫,所以你可以使用MySQL的CONCAT(str1,str2,...)功能點燃表的選擇功能

/* demo code just to show ,taken from ignited tables*/ 
public function select($columns, $backtick_protect = TRUE) 
{ 
    foreach($this->explode(',', $columns) as $val) 
    { 
    $column = trim(preg_replace('/(.*)\s+as\s+(\w*)/i', '$2', $val)); 
    $this->columns[] = $column; 
    $this->select[$column] = trim(preg_replace('/(.*)\s+as\s+(\w*)/i', '$1', $val)); 
    } 

    $this->ci->db->select($columns, $backtick_protect); 
    return $this; 
} 

您可以通過添加第二個參數$backtick_protect作爲試試這個FALSE

$this->datatables 
    ->select("ci_orders.id,ci_orders.transaction_id, 
    CONCAT(ci_orders.field1, ' ', ci_orders.field2) AS ci_orders.field1, 
    ci_orders.status",FALSE) 
    ->from('ci_orders') 
    ->join('ci_users', 'ci_orders.user = ci_users.id') 
    ->where('ci_users.id',$userId) 
    ->unset_column('ci_orders.id') 
    ->add_column('edit', '<a href="' . base_url() . 'cancel_order/$1"><button class="btn btn-danger" type="button"><i class="fa fa-times-circle"></i> Cancel</button>', 'id'); 
+1

感謝您的好評,讓我試試看 – fefe