【问题标题】:Active record where record is less than 15 minutes old记录不到 15 分钟的活动记录
【发布时间】:2015-09-28 02:43:29
【问题描述】:

我正在使用 Codeingiter 的活动记录,需要检查不到 15 分钟的条目。

我尝试了以下方法,我认为它会起作用。

$this->EE->db->select('entry_id')
             ->from('exp_channel_titles')
             ->where('status', $status)
             ->where('channel_id', $channel)
             ->where(FROM_UNIXTIME('entry_date') >= DATE_SUB(CURDATE(), INTERVAL 15 MINUTE))
             ->order_by('entry_date', 'desc'); 

有谁知道这是否可行?

我曾希望这可以在 where 子句中起作用”

FROM_UNIXTIME('entry_date') >= DATE_SUB(CURDATE(), INTERVAL 15 MINUTE)

【问题讨论】:

  • 该函数将在 PHP 中进行评估,而不是在 MySQL 中。

标签: php codeigniter date codeigniter-2


【解决方案1】:

来自https://ellislab.com/codeigniter/user-guide/database/active_record.html

$this->db->where() 接受可选的第三个参数。如果你设置它 为 FALSE,CodeIgniter 不会尝试保护您的字段或表 带有反引号的名称。

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

所以你应该能够传递这样的字符串:

 ->where('FROM_UNIXTIME(`entry_date`) >= DATE_SUB(CURDATE(), INTERVAL 15 MINUTE)', NULL, FALSE)

【讨论】:

  • 谢谢。这是运行代码。如果我的“entry_date”在 UNIX 中是这样的:“1436441790”,有什么理由不应该工作吗?
  • 看看这个,它实际上应该是`entry_date`,因为列不应该用引号引起来,而应该是反引号。
猜你喜欢
  • 1970-01-01
  • 2021-01-29
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 2023-03-16
  • 1970-01-01
  • 2014-08-05
相关资源
最近更新 更多