CodeIgniter/PHP Active Record 不会增加整数

Posted

技术标签:

【中文标题】CodeIgniter/PHP Active Record 不会增加整数【英文标题】:CodeIgniter/PHP Active Record won't increment an integer 【发布时间】:2011-04-08 11:13:16 【问题描述】:

这是我在 CodeIgniter 的 Active Record 中的查询:

function calculate_invites($userid)

    $this->db->where('id', $userid)
               ->update('users', array('invites' => 'invites-1', 'sentinvites' => 'sentinvites+1'), FALSE);

invitessentinvites 字段都是整数,但在函数运行后设置为 0。这让我认为 CodeIgniter 将 invites-1sentinvites+1 作为字符串传递,但我认为在末尾附加 FALSE 会阻止它这样做?

谢谢!

杰克

【问题讨论】:

因为 Ci-Active Record 的工作方式与我期望的 AC 工作方式几乎不同...这里是 ci-user-guide 推荐 active_record 【参考方案1】:

这不适用于update,仅适用于set

这应该可行:

$this->db->where('id', $userid);
$this->db->set('invites', 'invites-1', FALSE);
$this->db->set('sentinvites', 'sentinvites+1', FALSE);
$this->db->update('users');

这也可能有效(user guide 有点不清楚):

$this->db->where('id', $userid);
$this->db->set(array('invites' => 'invites-1', 'sentinvites' => 'sentinvites+1'), FALSE);
$this->db->update('users');

【讨论】:

以上是关于CodeIgniter/PHP Active Record 不会增加整数的主要内容,如果未能解决你的问题,请参考以下文章

SYSTEMPATH/CodeIgniter.php 在第 219 行

php中codeigniter中的应用程序路径

Codeigniter 3 会话不适用于 PHP 7.1.4

CodeIgniter / PHP:如何在 .php 视图页面中获取 URI

php codeigniter.php中的FB样式时间函数

Codeigniter:php 在视图中不起作用!