codeigniter在数据表列中获取数据数组

时间:2017-08-03 15:43:03

标签: arrays codeigniter datatable

我想查看数据表行中的多个数组。我不知道该怎么做。数据表仅查询_get_datatables_query内的内容。我无法查询其他引用的数据。

enter image description here

public function list_projects() {
  $list = $this->foo_pro->get_datatables();
  $data = array();
  $ProjectID = $_POST['start'];
  foreach ($list as $foo_pro) {
    $ProjectID++;
    $row = array();
    // $row[] = $no;
    $row[] = $foo_pro->P_Year.$foo_pro->Code.$foo_pro->ProjectID;
    $row[] = $foo_pro->Contractor_Name;
    $row[] = $foo_pro->User_Title.'. '.$foo_pro->Dp_LastName;
    $row[] = '<div style="">&#8369;'.number_format($foo_pro->Contract_Amount, 2).'</div>';
    $row[] = $foo_pro->FirstName.' '.$foo_pro->Initial.'. '.$foo_pro->LastName.' #'.$foo_pro->Control_No;
    $row[] = '';
    $row[] = '';
    $row[] = '';
    $data[] = $row;
  }

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

我想要实现的是1行和1列的数组。

我的加入查询。

$this->db->from($this->table);
$this->db->group_by('project.ProjectID');
$this->db->join('contractor', 'contractor.Contractor_No = project.Contractor_No');
$this->db->join('dpwh_user', 'dpwh_user.DPWH_User_No = project.DPWH_User_No');
$this->db->join('contractor_user', 'contractor_user.Contractor_User_No = project.Contractor_User_No');
$this->db->join('qcp', 'qcp.ProjectID = project.ProjectID');
$this->db->join('designmix', 'designmix.ProjectID = project.ProjectID');
$this->db->join('monthlyreport', 'monthlyreport.ProjectID = project.ProjectID');

enter image description here

2 个答案:

答案 0 :(得分:2)

如果您提到两个表格,请找到下面提到的查询来完成它。

SELECT 
    p.ProjectId,
    p.Year,
    p.code,
    p.contract_amount,
    GROUP_CONCAT(CONCAT_WS('|',CONCAT_WS('|',mr.month,mr.year),CONCAT(mr.completion,'% <br/>'))) as monthly_report
FROM project p
INNER JOIN monthly_report mr
GROUP BY p.ProjectId;

此外,我在<br/>函数中添加了group_concate(),因此当您在浏览器中呈现此输出时,它将根据您的要求添加中断。

如果不起作用,请告诉我。

Working SQL fiddle

答案 1 :(得分:0)

这里对此comment的回复是查询 在积极的记录技术。

实际上,在处理subquerys时,codeigniter并不是很好。 (根据我的知识)我添加了两个选项来处理subquerys。如果两个查询都没有得到你所知的那么我会建议使用$this->db->query();

我还没有测试过。

选项1

$query = $this->db
    ->select('GROUP_CONCAT(CONCAT_WS('|',CONCAT_WS('|',mr.month,mr.year),CONCAT(mr.completion,'% <br/>'))) as monthly_report, p.ProjectId,p.Year,p.code,p.contract_amount,')    
    ->from('project p')
    ->join('monthly_report mr', 'mr.ProjectId = p.ProjectId', 'left')                               
    ->group_by('p.ProjectId')                   
    ->get();

选项2

$subquery = "(select GROUP_CONCAT(CONCAT_WS('|',CONCAT_WS('|',mr.month,mr.year),CONCAT(mr.completion,'% <br/>'))) as monthly_report 
            from monthly_report as mr
            where mr.ProjectId = p.ProjectId)";

$query = $this->db
    ->select('p.ProjectId,p.Year,p.code,p.contract_amount') 
    ->select($subquery) 
    ->from('project p')
    ->join('monthly_report mr', 'mr.ProjectId = p.ProjectId', 'left')                               
    ->group_by('p.ProjectId')                   
    ->get();