【问题标题】:Codeigniter display in a view data from 2 different tables depending on an id from the viewCodeigniter 在视图中显示来自 2 个不同表的数据,具体取决于视图中的 id
【发布时间】:2014-05-04 12:17:21
【问题描述】:

我会尽量解释清楚:

这是我的爱好控制器函数,它获取我关于爱好帖子的所有数据,并在 group_homepage 视图中显示这些数据。

public function group_homepage($hobby_id){
    $this->load->model('model_posts');

    $data['posts'] = $this->model_posts->get_all_posts($hobby_id);

    $this->load->view('group_homepage',$data);

}

现在的问题是,对于我在视图中显示的每个帖子,我还想显示用户的个人资料图片和姓名(在我的数据库的 USER 表中找到)以及与该特定帖子关联的所有 cmets (在我的数据库的 COMMENT 表中找到)。

我的 group_homepage 如下所示:

<ul id='news_feed'>
   <?php
    foreach($posts as $post){
            echo "<li>";
            echo "<div class='left_post'>";
            echo "<a href='".base_url()."/index.php/login/open_profile/".$user_id."'>";
            echo"<img src='".base_url()."/uploads/".**USER'S PHOTO**."' alt='profile picture'>";
            echo "</a>";
            echo "</div>";

            echo "<div class='right_post'>";
            echo $post->message_text;
            echo " <p class='post_details'>written by <span>";
            echo **USER'S NAME**;
            echo "</span>, ";
            $db = $post->timestamp;
            $timestamp = strtotime($db);
            echo date("d-m-Y, G:i", $timestamp);
            **DISPLAY ALL POST'S COMMENTS**
            echo "</p></div></li>";
    }

?>
</ul>

您知道如何根据每篇帖子检索此信息并将其与我已有的关于该帖子的其他信息一起显示吗?

模型函数非常简单:

public function get_all_posts($hobby_id){
            $this->db->where('group_id',$hobby_id);
            $query = $this->db->get('post');
            return $query->result();
        }

我还要提一下,我的 POST 表有以下字段:post_id、user_id、timestamp、message_text、group_id 和 likes

【问题讨论】:

  • 您需要加入,因为我不是代码 Codeigniter 查询构建器方面的专家,您需要查看有关如何连接表和从不同表中检索数据的文档。如果您发布表结构,我可以给出您可以查询以加入以后可以轻松转换为 CI 样式的表
  • 嗨阿布尼克!感谢您的及时回复。我也知道如何加入表格以获取我需要的数据。我的问题是如何从视图中的 foreach 循环中检索 $post->post_id 并将其发送到控制器函数,控制器函数将分别根据 $post->post_id 或 $post->user_id 获取我需要的数据.

标签: php mysql sql codeigniter


【解决方案1】:

在开始之前阅读本用户指南codeigniter Active Record Class,在你的函数中

public function get_all_posts($hobby_id){
    $this->db->where('group_id',$hobby_id);
    $this->db->join('users', 'users.id = post.user_id'); //join with users table
    $this->db->join('comments', 'comments.user_id = post.user_id'); //join with comments table
    $query = $this->db->get('post');
    return $query->result();
}

现在您将拥有包括用户个人资料和 cmets 在内的所有数据,根据您的要求进行循环和显示。例如将名称和图片打印到视图中

 echo $post->name; 
 echo $post->picture; //you have to use image tag here to display user's picture.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多