Php Codeigniter:尝试在视图中的循环内运行查询
我有一个显示帖子的页面,我想在每个帖子旁边找到作者的名字。有一个用于页面的DB表(一列名为title和author),还有一个用于作者的DB表(一列名为id和author) 控制Php Codeigniter:尝试在视图中的循环内运行查询,php,codeigniter,codeigniter-2,Php,Codeigniter,Codeigniter 2,我有一个显示帖子的页面,我想在每个帖子旁边找到作者的名字。有一个用于页面的DB表(一列名为title和author),还有一个用于作者的DB表(一列名为id和author) 控制 function pages() { // QUERIES $pages_query = $this->db->get('table_pages'); $authors_query = $this->db->get_where('table_authors', array('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);
}
看法
标题:,作者
我认为我的问题在于根据控制中的id调用作者,但我似乎无法理解。基本上,您希望
连接这两个表,这样您就可以直接访问作者姓名,而不需要使用两个查询
您希望执行以下操作:
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);
}
看法
标题:,作者
您可能需要调整一些列名,因为我不知道您的数据库结构。如果table_页面和table_作者都包含name
或title
字段,则必须重命名查询中的列。您可以使用
$this->db->select('table_authors.title AS author_name,…)代码>您可以用一种非常简单的方法来实现这一点,只需编写查询,获取数据并将其传递给视图加载函数
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;
?>
对于控制器,您可以这样编写
功能页(){
$pages\u query=$this->db->query(“从表中选择*作者作为内部联接表”\u pages作为p ON a.id=p.table\u作者\u id”);
//资料
$data['pages']=$pages\u query->result\u array();
//创造
$this->load->view('admin_pages',$data);//将数据传递给视图加载函数。
}
对于视图,您可以这样编写。
我认为您需要联接表,表页面中是否有作者id列?谢谢。这对我有用。JOIN Active Record类在CI站点上没有很好的文档,我一直在尝试避免使用在线查询作为实践。Active Record类只不过是一组编写SQL查询的包装器。如果您不确定如何使用活动记录执行某些操作,请尝试了解如何使用纯SQL执行。更好地理解(我的)SQL将对您大有帮助!
<? foreach ($pages->result() as $row): ?>
Title: <?=$row->title?>, by <?=$row->table_authors_name?><br />
<? endforeach; ?>
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;
?>