У меня возникли проблемы с Codigniter 3 last insert_id.Codeigniter insert_id() странный вопрос
Я хочу получить последнее вставленное org_id. Но по ошибке я ставлю следующую команду, чтобы получить последний вставленный идентификатор после запроса для регистрации транзакции.
// grab org_id from insert
$insert_org_id = $this->db->insert_id();
// create preset levels
$this->preset_levels($insert_org_id);
Поэтому он правильно вернул последний вставленный идентификатор из таблицы журналов. Экстракт контроллера ниже:
// send org_data to model for db input
$this->org_model->add_org($org_data);
// audit log
// serialize data array for audit log
$serialised_array = serialize($org_data);
// specify audit log title
$log_title = 'Create Organisation';
// send data to audit log model
$this->audit_model->add_log($serialised_array,$log_title);
// end audit log entry
**// grab org_id from insert
$insert_org_id = $this->db->insert_id();
// create preset levels
$this->preset_levels($insert_org_id);**
Итак, я думал, что хорошо, плохо только двигаться так:
// grab org_id from insert
$insert_org_id = $this->db->insert_id();
// create preset levels
$this->preset_levels($insert_org_id);
после команды добавить орг см экстракт контроллера ниже:
// send org_data to model for db input
$this->org_model->add_org($org_data);
**// grab org_id from insert
$insert_org_id = $this->db->insert_id();
// create preset levels
$this->preset_levels($insert_org_id);**
// audit log
// serialize data array for audit log
$serialised_array = serialize($org_data);
// specify audit log title
$log_title = 'Create Organisation';
// send data to audit log model
$this->audit_model->add_log($serialised_array,$log_title);
// end audit log entry
Но он не возвращает никакой ценности? Вставляемый org_id не является числовым, это может быть проблемой?
Обе вставки очень простые вставки базы данных, смотрите ниже: метод
Добавить организацию в org_model
// add new organisation
public function add_org($org_data) {
$this->db->insert('organisations', $org_data);
}
И добавить метод войти audit_model
// add audit log entry
public function add_log($serialised_array,$log_title) {
// capture current date & time for audit log
date_default_timezone_set('Europe/London');
$date = date('Y-m-d H:i:s');
// build array of log data
$log_data = array(
'log_datetime' => $date,
'log_org_id' => $this->session->userdata('org_id'),
'log_user_id' => $this->session->userdata('user_id'),
'log_user_name' => $this->session->userdata('username'),
'log_title' => $log_title,
'log_detail' => $serialised_array
);
// insert log data to db
$this->db->insert('audit_log', $log_data);
}
Так почему же одна работа а другой нет? Что другое?
Хорошо, что имеет смысл. Есть ли простая команда, чтобы получить последнее значение не numeric non auto increment insert? – frobak
Нет такой команды (ofc вы всегда можете сделать выбор), так как если столбец не увеличивается автоматически, в столбце автоматически не присваивается значение, кроме значения по умолчанию. Вы должны сгенерировать нечисловой идентификатор в вашем php или sql-коде и явно вставить его в таблицу. – Shadow