我有一个名为ChatSessions的表,我跟踪聊天室中的活跃用户。我需要每隔10分钟从表中删除过期的用户会话。使用纯php-mysql很简单,但我完全不知道如何在CodeIgniter中将其转换为ActiveRecord。纯SQL查询如下:
SELECT *
FROM `ChatSessions`
WHERE `SessionExpires` < DATE_SUB( NOW( ) , INTERVAL 10 MINUTE )
有人可以告诉我使用ActiveRecord的CodeIgniter中的等效代码是什么?
答案 0 :(得分:4)
以下代码应该这样做:
// You can use custom strings in the where() function
$where = "SessionExpires < DATE_SUB( NOW( ) , INTERVAL 10 MINUTE )";
// although you may need to set the third parameter to FALSE in order to stop CI from protecting your fields.
$this->db->where($where, null, false);
$this->db->delete('ChatSessions');
您也可以尝试以下方法(但我不知道这是否有效):
$where_condition = "DATE_SUB( NOW( ) , INTERVAL 10 MINUTE )";
$this->db->where("SessionExpires <", $where_condition, false);
$this->db->delete('ChatSessions');
答案 1 :(得分:2)
如果您已经拥有SQL,将其转换为ActiveRecord似乎是浪费时间。我只是直接执行SQL。
$sql = "DELETE FROM ChatSessions
WHERE SessionExpires < DATE_SUB( NOW( ) , INTERVAL 10 MINUTE )";
$this->db->query($sql);