我有一个显示帖子的页面,我想在每个帖子旁边找到作者的姓名。有一个用于页面的数据库表(带有一个名为 title 和作者的列)和一个用于作者的列表(带有一个名为 id 和作者)。
控制
function pages() {
// QUERIES
$pages_query = $this->db->get('table_pages');
$authors_query = $this->db->get_where('table_authors', array('id =' => $row->author));
// DATA
$data['pages'] = $pages_query;
$data['authors'] = $authors_query;
// CREATE
$this->load->view('admin_pages', $data);
}
查看
<? foreach ($pages->result() as $row): ?>
Title: <?=$row->title?>, by <?=$authors['id']?><br />
<? endforeach; ?>
我认为我的问题是根据控件中的id调用作者,但我似乎无法弄明白。
答案 0 :(得分:1)
基本上,您希望JOIN
这两个表,因此您可以直接访问作者姓名,您不需要使用两个查询......
你想做类似的事情:
function pages() {
// QUERIES
$this->db->join('table_authors', 'table_pages.table_authors_id = table_authors.id');
$pages_query = $this->db->get('table_pages');
// DATA
$data['pages'] = $pages_query;
// CREATE
$this->load->view('admin_pages', $data);
}
查看
<? foreach ($pages->result() as $row): ?>
Title: <?=$row->title?>, by <?=$row->table_authors_name?><br />
<? endforeach; ?>
您可能需要调整一些列名,因为我不知道您的数据库结构。如果table_pages和table_authors都包含name
或title
字段,则您必须重命名查询中的列。您可以使用
$this->db->select('table_authors.title AS author_name, ...');
答案 1 :(得分:0)
您可以通过非常简单的方式执行此操作,只需编写查询,获取数据并将其传递给视图加载函数。
For controller you can write like this
function pages() {
$pages_query = $this->db->query("SELECT * FROM table_authors as a INNER JOIN table_pages as p ON a.id=p.table_authors_id");
// DATA
$data['pages'] = $pages_query->result_array();
// CREATE
$this->load->view('admin_pages', $data); // Passing the data to the view loading function.
}
For Views You can write like this.
<?php
foreach($pages as $page):
echo "Title: ".$page['title'].", by ".$page['table_authors_id'];
endforeach;
?>