我希望能够加入两张桌子togeather.
如何过,因为我我的论坛表有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" } }
问我如何从列和表中显示两个名称.
注意:我只希望能够$result['name']在我的foreach循环中使用.
所以我希望它能成为现实
General
News & Discussion
Lounge
Run Code Online (Sandbox Code Playgroud)
我看过了
JOIN语句中的CodeIgniter ActiveRecord字段名称
模型
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;
}
}
Run Code Online (Sandbox Code Playgroud)
调节器
<?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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用下面的代码工作正常,但宁愿只使用一个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;
}
Run Code Online (Sandbox Code Playgroud)
试试看,它会起作用。
public function get_forums() {
$this->db->select('f.name as forum_name, fc.name as forum_categories_name', false);
$this->db->from('forum f');
// tried $this->db->join('forum_categories fc', 'fc.forum_id = f.forum_id');
$this->db->join('forum_categories fc', 'fc.forum_categories_id = f.forum_id');
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result_array();
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
从我在你更新的问题中看到的。你需要的是UNION和不是JOIN。您可以使用get_compiled_select()在与 UNION 连接之前构建两个查询。
public function get_forums() {
$forum = $this->db->select('name')->get_compiled_select('forum');
$forum_categories = $this->db->select('name')->get_compiled_select('forum_categories');
$query = $this->db->query($forum.' UNION '.$forum_categories);
if ($query->num_rows() > 0) {
return $query->result_array();
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)