Как добавить другое значение массива в codeigniter, используя getRecords - PullRequest
0 голосов
/ 18 декабря 2018

Код кода был таким, я хочу получить значение landline_no также в getRecords, Как это сделать

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 голосов
/ 20 декабря 2018

Кажется, нет никаких оснований для использования getRecords().Значение $check не имеет никакой полезной цели, и его создание - пустая трата ресурсов.

Нам не нужно $check, поскольку getRecord_row() вернет "лидерство", если будет найдено, поэтому требуется только проверкачтобы увидеть, вернет ли getRecord_row() что-нибудь.getRecord_row() использует функцию базы данных row(), которая возвращает только одну строку или null, если строки не найдены.Читайте о row() здесь .

Если вам нужно найти «отведение», которое имеет «phone_no» или «landline_no», равное $_POST['number'], то вам нужно использовать пользовательскую строку длягде пункт.(См. # 4 на этой странице документации .) Вам нужна пользовательская строка, потому что 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, $group), а количество извлекаемых строк ($limit) начинается с номера строки x ($start).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...