Я пытаюсь использовать методы Active Record, чтобы обновить таблицу и пометить задачу как выполненную следующим образом:
$this->db->update('tasks', array('status' => 'complete'))
->where('id', $task_id);
Но это дает мне ошибку:
Call to a member function where() on a non-object
Здесь что-то не так, что я не вижу здесь? или метод цепочки не работает с обновлением? Документы довольно тонкие на метод цепочки ..
Это работает, если я разобью его на две строки …
$this->db->where('id', $task_id);
$this->db->update('tasks', array('status' => 'complete'));
но не должен ли метод цепочки работать здесь?
Версия PHP: 5.5.4
Версия CI: 3
Нашел ответ.
update () и insert () выполняются при вызове метода, поэтому цепочки нет, так как объект db не возвращается.
Правильный способ связать этот оператор вставки, чтобы обратить их:
$this->db->where('id', $task_id)->update('tasks', array('status' => 'complete'));
Или использовать третий параметр параметра в функции обновления:
$this->db->update('tasks', array('status' => 'complete'), array('id', $task_id));
Надеюсь, это поможет кому-то еще.
Кредит сообществу CI по адресу http://forum.codeigniter.com/thread-1281-post-5822.html
Других решений пока нет …