Php 如何将此SQL查询转换为Codeigniter活动记录?

Php 如何将此SQL查询转换为Codeigniter活动记录?,php,mysql,codeigniter,activerecord,Php,Mysql,Codeigniter,Activerecord,我有这个SQL查询,它看起来让我很困惑,我想如何将它转换为Codeigniter活动记录查询 SELECT *, ns_request_info.idx as request_idx, ns_staff_info.idx as staff_idx FROM `ns_request_info` INNER JOIN `ns_staff_info` ON ns_request_info.requested_by_idx = ns_staff_info.member_idx WHERE (

我有这个SQL查询,它看起来让我很困惑,我想如何将它转换为Codeigniter活动记录查询

SELECT *, ns_request_info.idx as request_idx, ns_staff_info.idx as staff_idx 

FROM `ns_request_info` 
INNER JOIN `ns_staff_info` 
ON ns_request_info.requested_by_idx = ns_staff_info.member_idx 

WHERE (
    (ns_request_info.line1=1 AND ns_request_info.line1_action='PENDING') OR
 (ns_request_info.line2=1 AND ns_request_info.line2_action='PENDING') OR
 (ns_request_info.line3=1 AND ns_request_info.line3_action='PENDING') OR
 (ns_request_info.line4=1 AND ns_request_info.line4_action='PENDING') OR
 (ns_request_info.line5=1 AND ns_request_info.line5_action='PENDING')
    ) AND (ns_request_info.status='PENDING' OR ns_request_info.status='ONGOING') 
ORDER BY ns_request_info.idx DESC
我考虑过像这样通过线路循环:

for ( $i=1 ; $i<=5 ; $i++) {
     ${'line'.$i} = $this->staffrequisition_model->getRequestsToProcess($i,$staffInfo->position_depth,$staffInfo->department_group);
}
$data = array_merge($line1, $line2, $line3, $line4, $line5);
    $search_val = 1;
    $action = "PENDING";
    $this->db->where("nri.line1 = $search_val and nri.line1_action = '{$this->db->escape_str($action)}'")
    ->or_where("nri.line2 = $search_val and nri.line2_action = '{$this->db->escape_str($action)}'")
    ->or_where("nri.line3 = $search_val and nri.line3_action = '{$this->db->escape_str($action)}'")
    ->or_where("nri.line4 = $search_val and nri.line4_action = '{$this->db->escape_str($action)}'")
    ->or_where("nri.line5 = $search_val and nri.line5_action = '{$this->db->escape_str($action)}'")
    ->join('ns_staff_info nsi', 'nsi.member_idx = nri.requested_by_idx')
    ->get('ns_request_info nri')->result_array();
但我意识到,对所有这些元素进行数组合并会破坏结果id的排序

这里有我的SQL查询,我不知道如何将其转换为Codeigniter活动记录查询

SELECT *, ns_request_info.idx as request_idx, ns_staff_info.idx as staff_idx 

FROM `ns_request_info` 
INNER JOIN `ns_staff_info` 
ON ns_request_info.requested_by_idx = ns_staff_info.member_idx 

WHERE (
    (ns_request_info.line1=1 AND ns_request_info.line1_action='PENDING') OR
 (ns_request_info.line2=1 AND ns_request_info.line2_action='PENDING') OR
 (ns_request_info.line3=1 AND ns_request_info.line3_action='PENDING') OR
 (ns_request_info.line4=1 AND ns_request_info.line4_action='PENDING') OR
 (ns_request_info.line5=1 AND ns_request_info.line5_action='PENDING')
    ) AND (ns_request_info.status='PENDING' OR ns_request_info.status='ONGOING') 
ORDER BY ns_request_info.idx DESC

我希望你们能帮助我。

试试这样的方法:

for ( $i=1 ; $i<=5 ; $i++) {
     ${'line'.$i} = $this->staffrequisition_model->getRequestsToProcess($i,$staffInfo->position_depth,$staffInfo->department_group);
}
$data = array_merge($line1, $line2, $line3, $line4, $line5);
    $search_val = 1;
    $action = "PENDING";
    $this->db->where("nri.line1 = $search_val and nri.line1_action = '{$this->db->escape_str($action)}'")
    ->or_where("nri.line2 = $search_val and nri.line2_action = '{$this->db->escape_str($action)}'")
    ->or_where("nri.line3 = $search_val and nri.line3_action = '{$this->db->escape_str($action)}'")
    ->or_where("nri.line4 = $search_val and nri.line4_action = '{$this->db->escape_str($action)}'")
    ->or_where("nri.line5 = $search_val and nri.line5_action = '{$this->db->escape_str($action)}'")
    ->join('ns_staff_info nsi', 'nsi.member_idx = nri.requested_by_idx')
    ->get('ns_request_info nri')->result_array();