CodeIgniter Active Record方法链接,更新无效

时间:2015-02-25 01:00:51

标签: php method-chaining phpactiverecord codeigniter-3

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

1 个答案:

答案 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));

希望这有助于其他人。

http://forum.codeigniter.com/thread-1281-post-5822.html

感谢CI社区