2017-09-21 13 views
0

내가 2 테이블을했습니다 및 datatables 서버 측에서 그들을 합류,하지만 난 잘못이야 어떤 관점에서의 쇼 중복 행,Datatables 필터 쇼 중복 행

모델 :

var $table = 'user_provider'; 
    var $column_order = array(null,'u.nm_uprov','u.email','g.nm_gprov'); //set column field database for datatable orderable 
    var $column_search = array('u.nm_uprov','u.email','g.nm_gprov'); 
    var $order = array('u.id_uprov' => 'desc'); // default order 

    function __construct(){ 
     parent::__construct(); 
     $this->load->database(); 

    } 

    private function _get_datatables_query() 
    { 

     $this->db->from($this->table); 
     $this->db->select('*'); 
     $this->db->from('user_provider as u'); 
     $this->db->join('grup_provider as g','u.id_gprov = g.id_gprov'); 

     $i = 0; 

     foreach ($this->column_search as $item) // loop column 
     { 
      if($_POST['search']['value']) // if datatable send POST for search 
      { 

       if($i===0) // first loop 
       { 
        $this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND. 
        $this->db->like($item, $_POST['search']['value']); 
       } 
       else 
       { 
        $this->db->or_like($item, $_POST['search']['value']); 
       } 

       if(count($this->column_search) - 1 == $i) //last loop 
        $this->db->group_end(); //close bracket 
      } 
      $i++; 
     } 

     if(isset($_POST['order'])) // here order processing 
     { 
      $this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']); 
     } 
     else if(isset($this->order)) 
     { 
      $order = $this->order; 
      $this->db->order_by(key($order), $order[key($order)]); 
     } 
    } 

컨트롤러 :

public function ajax_list() 
    { 
     $list = $this->M_user_provider->get_datatables(); 
     $data = array(); 
     $no = $_POST['start']; 
     foreach ($list as $uprov) { 
      $no++; 
      $row = array(); 
      $row[] = $no; 
      $row[] = $uprov->nm_uprov; 
      $row[] = $uprov->email; 
      $row[] = $uprov->nm_gprov; 

      //add html for action 
      $row[] = '<a class="btn btn-info btn-fill btn-sm" href="javascript:void(0)" title="Edit" onclick="edit_pic('."'". $uprov->id_uprov."'".')"><i class="glyphicon glyphicon-pencil"></i> Edit</a> 
        <a class="btn btn-danger btn-fill btn-sm" href="javascript:void(0)" title="Hapus" onclick="delete_pic('."'".$uprov->id_uprov."'".')"><i class="glyphicon glyphicon-trash"></i> Hapus</a>'; 

      $data[] = $row; 
     } 

     $output = array(
         "draw" => $_POST['draw'], 
         "recordsTotal" => $this->M_user_provider->count_all(), 
         "recordsFiltered" => $this->M_user_provider->count_filtered(), 
         "data" => $data, 
       ); 
     //output to json format 
     echo json_encode($output); 
    } 

테이블 :

  • 사용자 제공 table

  • 그룹 제공자 table

  • 테이블 쇼의 바닥

이 "(2 개 전체 항목에서 여과) 4 (4)의 항목 표시 1"을, 나는 무엇이 잘못되었는지 모든 테이블이 중복 행을 표시 제외하고 잘 작동하는지 모르겠다.

+0

테이블 구조를 게시하시기 바랍니다, 절 "에서"먼저 제거하십시오. –

+0

네, 테이블 구조를 추가했습니다. 제발 봐주세요. –

답변

0

당신은 테이블을 두 번 추가 : 두 번째에 당신이 그것을 별칭을 추가하기 때문에

$this->db->from($this->table); 
$this->db->select('*'); 
$this->db->from('user_provider as u'); 

것은

+0

오, 네가 맞아, 이젠 괜찮아. 고마워. –