我今天偶然发现了Codeigniter的逻辑问题。 4个小时后,我想我最好问这里。
我的项目主页包含:
我的问题在于获得每个帖子的顶级评论。
如果我没有使用Code Igniter,我就会这样做:
<?php
foreach( $posts as $post ) {
echo 'Post Title: '.$post['title'].'<br/>';
$top_commenters = $this->get_top_commenters($post['id']);
foreach( $top_commenters as $commenter ) {
echo '<img src="'. $commenter['avatar'] .'"/><br/>';
}
}
?>
我想你注意到我将每个Post的ID传递给一个函数,以获得它的顶级评论者。但是,在CodeIgniter中,我无法从视图中调用控制器。
我将使用的最后一个解决方案是Ajax。但我希望我能在这里得到一些帮助。
提前致谢!
更新:根据要求,这是我的模型功能和控制器功能:
//Model Function
function get_popular_posts() {
$row = $this->db->query('
SELECT * FROM posts
INNER JOIN popular_posts ON posts.id = popular_posts.pid
ORDER BY rank DESC LIMIT 6
');
return $row->result_array();
}
//Model Function
function get_top_commenters($post_id){
$row = $this->db->query('
SELECT *
FROM users
WHERE username
IN (
SELECT username
FROM comments WHERE pid = '. $post_id .')
ORDER BY likes DESC LIMIT 6
');
return $row->result_array();
}
答案 0 :(得分:1)
为什么要从您的视图中调用控制器功能? 当您生成视图文件时,您的所有数据处理都应该已经完成。
将$ top_commenters传递给控制器内的视图。
答案 1 :(得分:-6)
您可以从视图中调用任何控制器:URL示例:
<a href="controller_name/controller_function"> My URL </a>