Cas*_*ynn 59 mysql sql activerecord codeigniter
我有以下php-codeigniter脚本,它尝试使用活动记录语法递增记录的字段:
$data = array('votes' => '(votes + 1)');
$this->db->where('id', $post['identifier']);
$this->db->update('users', $data);
Run Code Online (Sandbox Code Playgroud)
这会产生以下SQL:
"UPDATE
用户SET
投票= '(votes + 1)' WHERE
ID = '44'
"
哪个不运行,但是这个SQL确实做了我正在寻找的东西:
"UPDATE
用户SET
投票= (votes + 1) WHERE
ID = '44'
"`< - 注意缺少引号(投票+ 1)
有没有人知道如何使用codeigniter的活动记录语法实现这种类型的查询?
小智 116
你可以这样做:
$this->db->where('id', $post['identifier']);
$this->db->set('votes', 'votes+1', FALSE);
$this->db->update('users');
Run Code Online (Sandbox Code Playgroud)
这样做的原因是因为第三个(可选)FALSE参数告诉CodeIgniter不用反引号('
)保护生成的查询.这意味着生成的SQL将是:
UPDATE users SET votes= votes + 1 WHERE id= '44'
如果您注意到,将从中删除反引号'(votes+1)'
,这会产生将votes属性递增1的所需效果.
归档时间: |
|
查看次数: |
36516 次 |
最近记录: |