如何使用getRecords在Codeigniter中添加另一个数组值

时间:2018-12-18 14:51:36

标签: codeigniter

原始代码是这样的,我也想在getRecords中获得landline_no值,该怎么做

public function checklead() {
$lead = $_POST['number'];
$check =  $this->common_model->getRecords('leads',array("phone_no"=>$lead));
if(count($check) > 0) {
$lead = $this->common_model->getRecored_row('leads',array("phone_no"=>$lead));
if($lead->assignto_self != 0) {
$assignto = $lead->assignto_self;
$key = 'Self Assign';
} else if($lead->assignto_se != 0) {
$assignto = $lead->assignto_se;
$key = '';} 

到目前为止,我已经实现了什么,但是没有从getRecords获取数组值

$lead = $_POST['number'];
$check =  $this->common_model->getRecords('leads',array("phone_no"=>$lead),array("landline_no"=>$lead));
//echo "<pre>";
//print_r($check); 
//echo  $check[0]['landline_no'];exit;
if(count($check) > 0) {
$lead = $this->common_model->getRecored_row('leads',array("phone_no"=>$lead,"landline_no"=>$check[0]['landline_no']));

getRecords的代码

function getRecords($table,$db = array(),$select = "*",$ordercol = '',$group = '',$start='',$limit=''){
            $this->db->select($select);
            if(!empty($ordercol)){
                $this->db->order_by($ordercol);
            }
            if($limit != '' && $start !=''){
                $this->db->limit($limit,$start);
            }
            if($group != ''){
                $this->db->group_by($group);
            }
            $q=$this->db->get_where($table, $db);
            return $q->result_array();

        }



// Get Recored row
    public function getRecored_row($table,$where)
    {
        $q = $this->db->where($where)
                        ->select('*')
                     ->get($table);

        return $q->row();
    }

检查我的答案:我已经编写了这段代码,但是我不确定,这种逻辑是正确的还是不请检查一下。

public function checklead() {
$lead = $_POST['number'];

if($this->common_model->getRecords('leads',array("phone_no"=>$lead)))
{
$check=$this->common_model->getRecords('leads',array("phone_no"=>$lead));
}
else
{
$check=$this->common_model->getRecords('leads',array("landline_no"=>$lead));
}
echo "<pre>";
//echo $check; 
//print_r($check); exit; 
 $p= $check[0]['phone_no'];
$l= $check[0]['landline_no'];  
// exit;
if(count($p) > 0 || count($l)>0) {
$lead = $this->common_model->getRecored_row('leads',array("phone_no"=>$p));
$lead1 = $this->common_model->getRecored_row('leads',array("landline_no"=>$l));

if($lead->assignto_self != 0 || $lead1->assignto_self != 0) {
$assignto = $lead->assignto_self;
$key = 'Self Assign';
} else if($lead->assignto_se != 0 || $lead1->assignto_se != 0) {
$assignto = $lead->assignto_se;
$key = '';
}else if($lead->assignto_tl != 0 || $lead1->assignto_tl != 0) {
$assignto = $lead->assignto_tl;
$key = '';
} else if($lead->uploaded_by != 0 || $lead1->uploaded_by != 0) {
$assignto = $lead->uploaded_by;
$key = 'Uploaded by';
}

$user = $this->common_model->getRecored_row('admin',array("id"=>$assignto));
$role = $this->common_model->getRecored_row('role',array("id"=>$user->role));

$this->session->set_flashdata('message', array('message' => 'This Lead Already exist with '.$user->name.' ('.$role->role.') '.' ','class' => 'danger'));
redirect(base_url().'leads');
} else {
redirect(base_url().'leads/add_newlead/'.$lead);
}
}

1 个答案:

答案 0 :(得分:1)

似乎没有任何理由使用ceskereality.czgetRecords()值没有用处,创建它会浪费资源。

我们不需要$check,因为$check将返回“ lead”(如果找到),因此唯一需要检查的是查看getRecord_row()是否返回任何内容。 getRecord_row()使用数据库函数getRecord_row(),该函数仅返回一行;如果找不到行,则返回row()。了解有关null here的信息。

如果您要查找的“ lead”中包含“ phone_no” 等于“ row()”的“ landline_no”,则您需要使用自定义字符串where子句。 (请参阅此documentation page上的#4。)您需要一个自定义字符串,因为$_POST['number']不允许以其他任何方式询问行getRecord_row()。这是我认为您要寻找的。

where a='foo' OR b='foo'

public function checklead() { // use input->post() it is the safe way to get data from $_POST $phone = $this->input->post('number'); // $phone could be null if $_POST['number'] is not set if($phone) { $lead = $this->common_model->getRecored_row('leads', "phone_no = $phone OR landline_no = $phone"); // $lead could be null if nothing matches where condition if($lead) { if($lead->assignto_self != 0) { $assignto = $lead->assignto_self; $key = 'Self Assign'; } else if($lead->assignto_se != 0) { $assignto = $lead->assignto_se; $key = ''; } } } } getRecords()之间的主要区别是要返回的记录数(数据行)。 getRecord_row()最多返回一条记录,而getRecord_row()可能返回许多记录。

getRecords()接受可控制选择哪些数据(getRecords()$db),如何安排($select$ordercol)的参数,以及从行号x($group)开始检索的行数($limit)。