我将一组对象传递给视图,包括一些外部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,如用户表中所示)
答案 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。