Как удалить записи, используя ActiveRecord с функцией mySQL в качестве условия WHERE - PullRequest
3 голосов
/ 07 июня 2010

У меня есть таблица ChatSessions, где я отслеживаю активных пользователей в чате.Мне нужно подрезать просроченные пользовательские сессии из таблицы каждые 10 минут.Использовать чистый php-mysql просто, но я совершенно не понимаю, как преобразовать это в ActiveRecord в CodeIgniter.Простой SQL-запрос приведен ниже:

SELECT *
FROM `ChatSessions`
WHERE `SessionExpires` < DATE_SUB( NOW( ) , INTERVAL 10 MINUTE )

Кто-нибудь может мне сказать, что такое эквивалентный код в CodeIgniter с использованием ActiveRecord?

Ответы [ 2 ]

4 голосов
/ 09 июня 2010

Следующий код должен сделать это:

// 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');
2 голосов
/ 07 июня 2010

Преобразование его в ActiveRecord, если у вас уже есть SQL, кажется пустой тратой времени.Я бы просто выполнил SQL напрямую.

$sql = "DELETE FROM ChatSessions 
        WHERE SessionExpires < DATE_SUB( NOW( ) , INTERVAL 10 MINUTE )";
$this->db->query($sql);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...