简体   繁体   中英

Codeigniter with datamapper save error

So I was trying to make a CRUD for my app. I have setup a controller, like this:

class Clients extends CI_Controller {


public function __construct() {
    parent::__construct();
    session_start();
    $this->c = new Client();
    $this->u = new User();
}

function index() {
    $data['current_view'] = 'client_view';
    $data['header'] = 'Меню клиентов';

    $data['clients'] = $this->getClients();

    $this->load->view('main_view',$data);
}

function getClients() {

    $this->u->where('username',$_SESSION['username'])->get();

    $c = $this->c->where('user_id',$this->u->id)->get();

    return $c;
}

function delClient() {
    $this->c->where('client_id', $this->uri->segment(3))->delete();

    $this->c->skip_validation()->save();

    $this->index();
}

}

However, when I'm trying to perform a delete on a client, i get a db error:

You must use the "set" method to update an entry.

Filename: C:\\OpenServer\\domains\\localhost\\system\\database\\DB_active_rec.php

Line Number: 1174

What might be the cause of this? I found a similar question here, but I don't think that's the case.

EDIT: Client model:

class Client extends DataMapper {

public $has_one = array('user');

public function __construct($id = NULL) {
   parent::__construct($id);
}

}

you have not passed the uri segment to the function delClient() and this is your model right...

function delClient($id) {
  //$id is the value which you want to delete
  $this->c->where('client_id', $id)->delete();

  $this->c->skip_validation()->save();

  $this->index();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM