1

我正在尝试使用 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

4

1 回答 1

1

找到了答案。

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

于 2015-02-25T20:57:41.747 回答