【发布时间】:2016-09-20 09:21:24
【问题描述】:
我希望能够将两个表连接在一起。
因为我的 论坛表 有 column "name" 和我的 forum_categories column "name"
我无法同时显示这两个名字。
在我的 select() 上,如果我使用 $this->db->select('f.name, fc.name', false);,它只会显示来自 forum_categories 的名称
array(1) { [0]=> array(1) { ["name"]=> string(17) "News & Discussion" } }
问题我怎样才能让两个名称都显示在两个列中 表格。
注意:我只想在我的 foreach 循环中使用$result['name']。
所以我希望它是输出
General
News & Discussion
Lounge
我看过
CodeIgniter ActiveRecord field names in JOIN statement
codeigniter - select from 2 tables with same column name
模型
public function get_forums() {
$this->db->select('f.name, fc.name', false);
$this->db->from('forum as f');
// tried $this->db->join('forum_categories as fc', 'fc.forum_id = f.forum_id');
$this->db->join('forum_categories as fc', 'fc.forum_categories_id = f.forum_id');
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result_array();
} else {
return false;
}
}
控制器
<?php
class Forums extends MY_Controller {
public function __construct() {
parent::__construct();
}
public function index() {
$data['label'] = '';
$data['forums'] = array();
$results = $this->get_forums();
var_dump($results);
if (isset($results)) {
foreach ($results as $result) {
$data['forums'][] = array(
'name' => $result['name'], // Only want to use single variable.
);
}
}
$data['header'] = Modules::run('admin/common/header/index');
$data['footer'] = Modules::run('admin/common/footer/index');
$this->load->view('template/forum/list_forum_view', $data);
}
public function get_forums() {
$this->db->select('f.name, fc.name', false);
$this->db->from('forum as f');
$this->db->join('forum_categories as fc', 'fc.forum_categories_id = f.forum_id');
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result_array();
} else {
return false;
}
}
}
更新
在下面的代码中可以正常工作,但宁愿只使用大量的 join()
public function get_forums() {
$this->db->select("*");
$this->db->from('forum');
$query = $this->db->get();
foreach ($query->result_array() as $f) {
$data[] = array(
'name' => $f['name']
);
$this->db->select("*");
$this->db->from('forum_categories');
$query = $this->db->get();
foreach ($query->result_array() as $fc) {
$data[] = array(
'name' => $fc['name']
);
}
}
return $data;
}
【问题讨论】:
-
你可以在查询执行后直接
echo $this->db->last_query();并尝试直接执行到 phpmyadmin 看看它给出了什么 -
@Zeeshan
SELECT f.name, fc.name FROMforum` asfJOINforum_categoriesasfcONfc.forum_categories_id=f.`forum_id`` -
你试过在
phpmyadmin执行它
标签: php codeigniter