我正在使用 codeigniter 对我的网站进行编码,但遇到了障碍。我知道如何在常规的非“MVC”中做到这一点,而不是 OOP PHP,但我在 Codeigniter 中苦苦挣扎。
我有 blog_model.php,它具有从我的数据库中检索日期时间的功能,将其分解为一个数组,以便我可以在模型之外使用它并将其提供给我有单独的日历图标的 CSS。每个日历图标都由视图中的月份编号加载 ( <div class='calendar-icon-$stats['date']
)。此函数还从单个帖子中提取评论数量并将其输出到数组中,以便我可以在视图中显示它。
public function get_stats($id) {
$this->db->select('id,datetime')->from('blog_posts')->where('id',$id);
$dquery = $this->db->get();
$dquery = $dquery->row_array();
$date = date('Y-m-d', strtotime($dquery['datetime']));
$stats = explode("-", $date); // This makes $stats[0] the year, $stats[1] the month and $stats[2] the day.
$stats['time'] = date('H:i', strtotime($dquery['datetime']));
$stats['comcount'] = $this->db->get_where('blog_comments', array('blogid' => $id));
$stats['comcount'] = $stats['comcount']->num_rows();
return $stats;
}
还有一个函数可以检索三个最近的条目:
public function get_blog_last() {
$query = $this->db->order_by('id desc')->get('blog_posts',3);
return $query->result_array();
}
然后将此代码加载到我的控制器中并发送到要显示的视图:
$data['blog'] = $this->blog_model->get_blog_last();
$data['stats'] = $this->blog_model->get_stats($data['blog']);
$this->load->view('index',$data);
我面临的问题是如何让 get_stats() 函数为我在索引页面上的每个条目运行,其中显示了最后三个条目。到目前为止,我只能为其中一个运行它,因此我首页上的所有三个条目都有相同的日期、相同的时间和相同数量的评论。我认为将代码放入模型中可以避免重复自己,因为我必须为存档页面(我显示该月的所有帖子)和我只显示该条目及其评论的主条目页面加载它。
所以,这里的最终问题是:
- 如何为给定页面上的每个条目运行 get_stats?
我在确定传递给我的 get_stats() 函数的正确值时也遇到了一些问题。
任何指导将不胜感激。先感谢您。