Уникальная генерация кода с использованием Last Insert Id в Code Igniter?

0

Мне нужно создать drcode, используя последний идентификатор insert в предписанном формате, ранее я использовал cor php для получения кода, но теперь в codeigniter я не смог получить код как предыдущий. Как я могу это сделать? Я предоставляю свой контроллер и модель

контроллер

public function newdoctor_post() {
            $employee_id = $this->post('EMPLOYEE_ID');
            $doctorname = $this->post('DOCTOR_NAME');
            $mobilenumber = $this->post('DRMOBILE');
            $users_data = $this->Rest_user_model->doctor_exists($mobilenumber);
            if ($users_data == 1) {
                $message = ['status' => 2,
                // 'result' => array(),
                'message' => 'Doctor already registered'];
            } else {
                $speciality = $this->post('SPECIALITY');
                $longitude = $this->post('LONGITUDE');
                $latitude = $this->post('LATITUDE');
                $drcode = $this->post('DRCODE');
                $createdon = date('Y-m-d H:i:s');
                $insert_array = array('EMPLOYEE_ID' => $employee_id, 'DOCTOR_NAME' => $doctorname, 'DRMOBILE' => $mobilenumber, 'SPECIALITY' => $speciality, 'LONGITUDE' => $longitude, 'LATITUDE' => $latitude, 'CREATEDON' => $createdon);
                $users_data = $this->Rest_user_model->doctorregistration($insert_array);
                $message = ['status' => 1, // 'result' => $users_data,
                'message' => 'Doctor Registered Successfully'];
            }
            $this->set_response($message, REST_Controller::HTTP_OK);
        }

модель

public function doctorregistration($data) {
        if (!empty($data)) {
            $this->db->insert('DOCTORDETAILS', $data);
            return $this->db->insert_id();
        }
        return 0;
    }

Генерация кода

$sql1="SELECT DRCODE FROM DOCTORDETAILS  ORDER BY DRCODEDESC LIMIT 1";
    $query=mysql_query($sql1);
    if (!$sql1) { // add this check.
    die('Invalid query: ' . mysql_error());
    }
    $output_array2=array();
    while($row=mysql_fetch_assoc($query))
    {
    $ids=$row['DRCODE'];

    }
    // echo $ids;
    if($ids){
        $su=1;
        $num =$num = 'DR' . str_pad($su + substr($ids, 3), 6, '0', STR_PAD_LEFT);;
        $unique=$num;
    }else{
        $unique='DR000001';     
    }
Теги:
codeigniter

2 ответа

0
Лучший ответ

Попробуйте это - замените этот код ниже кодом кода генерации кода.

$sql1="SELECT DRCODE FROM DOCTORDETAILS  ORDER BY DRCODEDESC LIMIT 1";
    $query=$this->db->query($sql1);
    if (!$sql1) { // add this check.
        die('Invalid query');
    }
    $output_array2=array();
    foreach($query->result_array() as $row)
    {
        $ids=$row['DRCODE'];
    }
    // echo $ids;
    if($ids){
        $su=1;
        $num =$num = 'DR' . str_pad($su + substr($ids, 3), 6, '0', STR_PAD_LEFT);;
        $unique=$num;
    }else{
        $unique='DR000001';     
    }
  • 0
    Мне нужно реализовать это в Codeigniter @TigerTiger, хотя реализация не дает никакого значения
  • 0
    Да, я сделал это для тебя. Попробуй.
Показать ещё 1 комментарий
0

Вы должны сделать другой столбец fr drcode, оставьте его пустым. Теперь сделайте триггер на вставке, он должен быть запущен после вставки.

Я принимаю DOCTORDETAILS как имя таблицы и drcode как имя столбца

DELIMITER $$

CREATE TRIGGER trigger_after_insert 
AFTER INSERT ON 'DOCTORDETAILS' FOR EACH ROW
begin

UPDATE 'DOCTORDETAILS' set drcode=CONCAT('DR',new.id);

END$$

DELIMITER ;

Триггер создает новую строку с вашим новым автоматически генерируемым идентификатором

Триггер в MySQL:

TechonTheNet

MySQL Триггер после вставки

  • 0
    Tanq @ Irfan, мы не можем сделать это в самом коде
  • 0
    @SairamDuggi да, мы можем, но вам нужно выполнить еще один запрос после вставки. Мы делаем то же самое, что мне предложили.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню