问题
I dont know how to convert this long model function to ignited datatable query. I have done small select functions with ignited datatables.Anybody know???
I have no idea about how to covert it. Is there any functions to do it?
public function fetch_data() {
$this->db->from('jil_requirements');
$this->db->join('jil_users', 'jil_requirements.rqm_userid=jil_users.usr_id', 'left');
$this->db->join('jil_merchants', 'jil_requirements.rqm_createdempid=jil_merchants.mer_id', 'left');
$this->db->where('jil_requirements.rqm_permission!=', '4');
$this->db->order_by("jil_requirements.rqm_id", "desc");
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$this->db->select('count(jil_mrorfq.rfq_requirementid) as total');
$this->db->from('jil_mrorfq');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id=jil_mrorfq.rfq_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query2= $this->db->get()->row_object();
$row->total_count = $query2->total;
$this->db->select('count(jil_quotemjdetail.qud_requirementid) as quotemjtotal');
$this->db->from('jil_quotemjdetail');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id=jil_quotemjdetail.qud_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query3= $this->db->get()->row_object();
$row->quotemj_total = $query3->quotemjtotal;
$this->db->select('count(jil_quotejcdetail.qud_requirementid) as quotejctotal');
$this->db->from('jil_quotejcdetail');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id= jil_quotejcdetail.qud_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query4= $this->db->get()->row_object();
$row->quotejc_total = $query4->quotejctotal;
$this->db->select('count( jil_pocjdetail.pocd_requirementid) as pocjtotal');
$this->db->from('jil_pocjdetail');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id= jil_pocjdetail.pocd_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query5= $this->db->get()->row_object();
$row->pocj_total = $query5->pocjtotal;
$this->db->select('count(jil_pojmdetail.pojd_requirementid) as pojmtotal');
$this->db->from('jil_pojmdetail');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id= jil_pojmdetail.pojd_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query6= $this->db->get()->row_object();
$row->pojm_total = $query6->pojmtotal;
$data[] = $row;
}
return $data;
}
return false;
}
回答1:
$this->db->select('count(jil_quotemjdetail.qud_requirementid) as quotemjtotal');
$this->db->from('jil_quotemjdetail');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id=jil_quotemjdetail.qud_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query3= $this->db->get()->row_object();
$row->quotemj_total = $query3->quotemjtotal;
$this->db->select('count(jil_quotejcdetail.qud_requirementid) as quotejctotal');
$this->db->from('jil_quotejcdetail');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id= jil_quotejcdetail.qud_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query4= $this->db->get()->row_object();
$row->quotejc_total = $query4->quotejctotal;
$this->db->select('count( jil_pocjdetail.pocd_requirementid) as pocjtotal');
$this->db->from('jil_pocjdetail');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id= jil_pocjdetail.pocd_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query5= $this->db->get()->row_object();
$row->pocj_total = $query5->pocjtotal;
$this->db->select('count(jil_pojmdetail.pojd_requirementid) as pojmtotal');
$this->db->from('jil_pojmdetail');
$this->db->join('jil_requirements', 'jil_requirements.rqm_id= jil_pojmdetail.pojd_requirementid', 'left');
$this->db->where('jil_requirements.rqm_id',$row->rqm_id);
$query6= $this->db->get()->row_object();
$row->pojm_total = $query6->pojmtotal;
$data[] = $row;
}
return $data;
}
return false;
}
回答2:
First you have to load the ignited dataTables library.
$this->load->library('datatables');
OR
add it to Autoloader for automatic loading when your Codeigniter application starts.
After that, change all
$this->db->
in your queries to
$this->datatables
Finally you have to use this to encode the data in json array
$this->datatables->generate();
Lemme know if i can still be of help
UPDATE
public function fetch_data() {
$this->datatables->from('jil_requirements');
$this->datatables->join('jil_users', 'jil_requirements.rqm_userid=jil_users.usr_id', 'left');
$this->datatables->join('jil_merchants', 'jil_requirements.rqm_createdempid=jil_merchants.mer_id', 'left');
$this->datatables->where('jil_requirements.rqm_permission!=', '4');
$this->datatables->order_by("jil_requirements.rqm_id", "desc");
$query = $this->datatables->get();
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$this->datatables->select('count(jil_mrorfq.rfq_requirementid) as total');
$this->datatables->from('jil_mrorfq');
$this->datatables->join('jil_requirements', 'jil_requirements.rqm_id=jil_mrorfq.rfq_requirementid', 'left');
$this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
$query2= $this->datatables->get()->row_object();
$row->total_count = $query2->total;
$this->datatables->select('count(jil_quotemjdetail.qud_requirementid) as quotemjtotal');
$this->datatables->from('jil_quotemjdetail');
$this->datatables->join('jil_requirements', 'jil_requirements.rqm_id=jil_quotemjdetail.qud_requirementid', 'left');
$this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
$query3= $this->datatables->get()->row_object();
$row->quotemj_total = $query3->quotemjtotal;
$this->datatables->select('count(jil_quotejcdetail.qud_requirementid) as quotejctotal');
$this->datatables->from('jil_quotejcdetail');
$this->datatables->join('jil_requirements', 'jil_requirements.rqm_id= jil_quotejcdetail.qud_requirementid', 'left');
$this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
$query4= $this->datatables->get()->row_object();
$row->quotejc_total = $query4->quotejctotal;
$this->datatables->select('count( jil_pocjdetail.pocd_requirementid) as pocjtotal');
$this->datatables->from('jil_pocjdetail');
$this->datatables->join('jil_requirements', 'jil_requirements.rqm_id= jil_pocjdetail.pocd_requirementid', 'left');
$this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
$query5= $this->datatables->get()->row_object();
$row->pocj_total = $query5->pocjtotal;
$this->datatables->select('count(jil_pojmdetail.pojd_requirementid) as pojmtotal');
$this->datatables->from('jil_pojmdetail');
$this->datatables->join('jil_requirements', 'jil_requirements.rqm_id= jil_pojmdetail.pojd_requirementid', 'left');
$this->datatables->where('jil_requirements.rqm_id',$row->rqm_id);
$query6= $this->datatables->get()->row_object();
$row->pojm_total = $query6->pojmtotal;
echo $this->datatables->generate();
}
回答3:
Use this in your controller and see if its working
public function fetch_data()
{
$this->load->library("datatables");
$query = $this->datatables
->select('jil_requirements.*,count(jil_mrorfq.rfq_requirementid) as total,count(jil_quotemjdetail.qud_requirementid) as quotemjtotal,count(jil_quotejcdetail.qud_requirementid) as quotejctotal,count( jil_pocjdetail.pocd_requirementid) as pocjtotal,count(jil_pojmdetail.pojd_requirementid) as pojmtotal')
->from('jil_requirements')
->join('jil_users', 'jil_requirements.rqm_userid=jil_users.usr_id', 'left')
->join('jil_merchants', 'jil_requirements.rqm_createdempid=jil_merchants.mer_id', 'left')
->join('jil_mrorfq', 'jil_mrorfq.rfq_requirementid = jil_requirements.rqm_id', 'left')
->join('jil_quotemjdetail', 'jil_quotemjdetail.qud_requirementid = jil_requirements.rqm_id', 'left')
->join('jil_pocjdetail', 'jil_pocjdetail.pocd_requirementid = jil_requirements.rqm_id', 'left')
->join('jil_pojmdetail', 'jil_pojmdetail.pojd_requirementid = jil_requirements.rqm_id', 'left')
->where('jil_requirements.rqm_permission!=', '4');
echo $this->datatables->generate();
}
来源:https://stackoverflow.com/questions/35646188/i-want-to-convert-this-query-in-codeigniter-to-ignited-datatable-query