我正在尝试使用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
答案 0 :(得分:1)
找到答案。
update()和insert()在调用方法时执行,因此没有任何内容可以链接到,因为没有返回db对象。
链接此insert语句的正确方法是反转它们:
$this->db->where('id', $task_id)->update('tasks', array('status' => 'complete'));
或者在更新功能上使用第3个选项参数:
$this->db->update('tasks', array('status' => 'complete'), array('id', $task_id));
希望这有助于其他人。
感谢CI社区