【问题标题】:Codeigniter Active Record - Start query at a specific ID?Codeigniter Active Record - 从特定 ID 开始查询?
【发布时间】:2014-06-04 15:00:37
【问题描述】:

我正在尝试设置一个 Cron 作业,它将按顺序选择精选视频。

例如,视频 ID 1 当前是精选视频。几周后它将变为 ID 2。然后我想在此之后加载 3-18 的视频。

这是否可以使用 Active Record 或 MySQL 语句?

这是一个很难解释的问题,所以如果您需要更多信息,请发表评论,我会回复您。

非常感谢。

【问题讨论】:

  • 只需在数据库中的某处添加一个名为 current_video_id 的列,每次运行 cronjob 时使用下一个 ID 更新该列。希望您知道如何进行该查询。
  • 是不断添加新视频还是有固定的视频列表?
  • 嗨@Daan,它是一个恒定的视频列表,全部在数据库中

标签: php mysql codeigniter activerecord


【解决方案1】:

我同意@Daan 的评论。

在您的数据库中添加一个新列 (current_featured_id),它可以是 TINYINT,默认值为 0。如果有视频,则该行将在 current_featured_id 列中显示 1。

就实际的 cron 作业而言,在您的 crontab 中添加一个命令以每周运行一次该函数 * 0 * * 0 featured_vid(每周日午夜运行)

function featured_vid() {
     //get the current featured id
     $featured_id = $this->db->select('video_id')
               ->from('table_name')
               ->where('current_featured_id',1)
               ->get()->row()->video_id;

     $new_featured_id = $featured_id+1;

     $update_featured = array(
         array(
              'video_id' => $featured_id,
              'current_featured_id' => 0
         ),
         array(
              'video_id' => $new_featured_id,
              'current_featured_id' => 1
         ),
     );

     //update your db
     $this->db->update_batch('table_name', $update_featured, 'video_id');
}

【讨论】:

  • 绝对精彩@Dan 谢谢你!我将使用 current_featured_id 并从那里开始。也为 Cron 提示干杯:-)
  • 我唯一要查询的是我在您的 Active Record 查询中遇到了一些错误。消息:试图获取非对象的属性 ->get()->result()->video_id;
  • 尝试将其更改为 get()->row()->video_id;我更新了答案,我认为应该解决这个问题!或者,如果它仍然给您带来问题,只需执行 get->result() 然后从您的 $featured_id 中获取结果 video_id
猜你喜欢
  • 2012-04-17
  • 2013-02-22
  • 2016-03-15
  • 2013-01-09
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
相关资源
最近更新 更多