Как проверить, влияет ли только определенный столбец таблицы в Codeigniter? - PullRequest
0 голосов
/ 08 мая 2019

В настоящее время у меня есть контроллер и модель для редактирования формы. Если пользователь отправляет другое значение, это изменит значение в базе данных и, если есть затронутые строки, установит флэш-сообщение как «успех», и если те же данные будут отправлены пользователем без изменения значения, тогда будет установлено флэш-сообщение как «nochange». ».

           if($this->db->affected_rows() > 0 ) {
               $this->session->set_flashdata('success','Database is updated');
               redirect('registrar');
           } else {
               $this->session->set_flashdata('nochange','There is no changes in database');
               redirect('registrar');
           } 

В Codeigniter, как я могу проверить, затрагиваются ли только определенные столбцы?

Например, если моя таблица в базе данных имеет 12 столбцов, если пользователь только изменяет значение, скажем, в столбце 10, тогда установите флэш-сообщение как "nochange".

Если пользователь изменяет значения в других столбцах, кроме столбца 10, установите флэш-сообщение как «успех»

1 Ответ

0 голосов
/ 08 мая 2019

Для этого в CodeIgniter или php нет встроенной функциональности.

Вы должны получить всю запись целиком, прежде чем обновлять ее.Затем столбец за столбцом сравнивайте представленное значение с текущим значением записи в соответствии с требуемой логикой.

Пример псевдокода:

$q = $this->db->get_where('table', array('id' => $id))->row();

$change = false;

if ($this->input->post('col1') !== $q->col1) {
    $change = true;
}

...

if ($this->input->post('col10') == $q->col10) {
    $change = false;
}


$this->db->update('table', $data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...