Обновление значений Codeigniter в таблице - PullRequest
0 голосов
/ 27 марта 2020

Я учусь использовать codeigniter с библиотекой rest_controller.

Я ищу, чтобы обновить некоторые значения в таблице в моей базе данных.

У меня в контроллере:

public function guest_patch(){
        $idperson = $this->uri->segment(3);
        $person = array(
            'fiscalcode' => $this->input->post('fiscalcode'),
            'name' => $this->input->post('name'),
            'surname' => $this->input->post('surname')
        );
        $this->load->model('Person_model');
        $data = $this->Person_model->patch($idperson, $person);
        $this->response($data);
    }

, а в моей модели:

public function patch($idperson, $person){
        $this->fiscalcode = $person['fiscalcode'];
        $this->name = $person['name'];
        $this->surname = $person['surname'];
        $result = $this->db->update('Persons', $this, array('id' => $idperson));
        if($result){
            return("Dati aggiornati");
        }
    }

У меня к вам два вопроса:

1) В этом случае, когда я запускаю метод update , значения в моей базе данных удаляются (или заменяются на 0). Фактически я попытался напечатать $ person в моей модели, и все значения, которые я передал (используя почтальон), пусты. Хотя, если я вставлю данные вручную в контроллер, как:

'fiscalcode' =>'NewFiscalCode'

, данные в дБ будут обновлены. Как я могу сделать, чтобы обновить значения, которые я восстановил из данных формы (в момент, когда я передаю с помощью почтальона)?

2) Если я не хочу обновлять значение и поэтому я покидаю поле пусто (например, я написал в форме данных только имя и фамилию, но я не хочу менять поле фискального кода), данные в БД об этом поле "фискальный код" будут удалены?

Спасибо

Ответы [ 2 ]

1 голос
/ 28 марта 2020
//use route for this in inside config/routes.php
$route['edit/(:any)'] = 'controller_name/guest_patch/$1';

public function guest_patch($idperson){
  $person = array(
            'fiscalcode' => $this->input->post('fiscalcode'),
            'name' => $this->input->post('name'),
            'surname' => $this->input->post('surname')
     );
  $this->load->model('Person_model');
  $data = $this->Person_model->patch($idperson, $person);
  $this->response($data);
    }
//model
public function patch($idperson, $person){
        return $this->db->where('idperson',$idperson)->update($person);
    }
1 голос
/ 27 марта 2020

Случай 1:

Я полагаю, вы задали столбец 'fiscalcode' как целое число в БД, и вы пытаетесь обновить не int данные. Так MySQL сбрасывает поле как 0;

Случай 2:

Обновление Контроллер код как этот:

$person = array(            
    'name' => $this->input->post('name'),
    'surname' => $this->input->post('surname')
);

if($this->input->post('fiscalcode')){
   $person['fiscalcode'] = $this->input->post('fiscalcode');
}

Обновление Модель код как этот:

if(isset($person['fiscalcode'])){
    $this->fiscalcode = $person['fiscalcode'];
}

Он будет назначаться только при публикации данных с параметром 'fiscalcode'

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