从视图中的其他表中检索数据

时间:2013-01-17 14:39:39

标签: php codeigniter

我将一组对象传递给视图,包括一些外部ID到数据库中的其他表。说具有属性“writer_id”的注释对象,该属性引用用户的id。

如何从视图中显示用户的数据(例如名称)?

这是控制器'评论':

function index() {

    $this->load->model('comment_model');
    $data['comments'] = $this->comment_model->get_comments();
    $this->load->view('comments',$data); }

这是在comment_model:

里面
function get_comments()
{
    $id = $this->uri->segment(3); // ignore this , it's given
    $q = $this->db->query("SELECT * FROM comments WHERE post_id=$id");

    if ($q->num_rows() > 0 ) {
        foreach ($q->result() as $row){
            $data[] = $row;
        }

        return $data;
    }

}

我在视图中可以使用的所有内容都是'writer_id',无法显示他的名字或任何其他数据。

更新

这是视图文件

    <?php
    if (is_array($comments)){ ?>

    <?php foreach ($comments as $comment) : ?>

    <p>
    <?php echo $comment->text;?> - written by <?php echo $comment->writer_id ?>
    </p>

    <?php endforeach ;?>
    <?php } ?>

这将打印:

  bla bla bla - 由4写的

应该在哪里

  

bla bla bla - 由John编写(其id为4,如用户表中所示)

1 个答案:

答案 0 :(得分:2)

您可以进行简单的加入。

SELECT comments.*, users.name as user_name FROM comments INNER JOIN users ON comments.writer_id = users.user_id WHERE post_id=$id

然后,您将在结果数组中拥有user_name。