Codeigniter活动记录查询

时间:2011-08-09 11:35:39

标签: codeigniter activerecord

function updateViews($id){
  $this->db->where('id',$id);
  $this->db->set('views','`views`+1', FALSE);
  $result = $this->db->update('company');
  return $result;
}

此函数将列“视图”更新为6而不是1(如编写)。

任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

您的代码显示:

$this->db->set('views','`views`+1', FALSE);

我认为第二个视图参数周围的引号太多了。

尝试:

$this->db->set('views', 'views+1', FALSE);

或者:

如果您使用id作为模型的参数来将视图更新为1,那么您可以通过一种方式创建一个私有函数来查找“view”的值,然后使用公共函数来更新值。

// Pass the $id in as a parameter
private function _getViewsValue($id) {
    // Select the views field
    $this->db->select('views');
    // Where the passed in parameter id is equal to the row id
    $this->db->where('id', $id);
    // Return the value
    return $this->db->get('company')->row()->views;
}

// Function to increment the views by 1. Pass in $id as parameter
public function incrementViews($id) {
    // Call the private function _getViewsValue to return the views value and store in variable $views and increment by 1
    $views = $this->_getViewsValue($id) + 1; 
    // Update the row
    $this->db->update('company', array('views' => $views), array('id' => $id))
    }

有时我需要调试时使用echo $ varible;模具();

希望这有助于:)