如何在 CodeIgniter 中使用 JOIN 和 get_where 子句
Posted
技术标签:
【中文标题】如何在 CodeIgniter 中使用 JOIN 和 get_where 子句【英文标题】:How do i use JOIN with a get_where clause in CodeIgniter 【发布时间】:2019-09-02 14:56:36 【问题描述】:在通过发送 Id 从上一个表 UI 中单击“打开”按钮后,我试图从两个表中获取数据。 例如
<a name="Open" href="<?php echo base_url('welcome/WellProfile/'.$post->Id) ?>">
(https://imgur.com/6IU1Tfo)
所以我有两个表 - 即 "WellDataA" 和 "WellDataB" ,我想通过 WellName(column) 获取 WellDataB 数据与 WellDataA 匹配的数据。
Example:
WellDataA:
Id Platform WellName
.
.
4 ZE ZE-A
5 ZE ZE-B
6 ZE Ze-B
.
.
WellDataB:
Id WellName CompleteDate
1 ZE-A 12/3
2 ZE-B 14/5
3 ZE-C 20/6
这就是我目前的查询方式,但最终出错
public function get_news_by_id($Id = 0)
if ($Id === 0)
$query = $this->db->get('WellDataA');
return $query->result_array();
$this->db->select('*');
$this->db->from('WellDataA');
$this->db->join('WellDataB','WellDataA.WellName =
WellDataB.WellName','INNER');
$query = $this->db->get_where('WellDataA', array('Id' => $Id));
return $query->row_array();
我希望在 ZE-A 上单击“打开”按钮时输出将显示 ZE、ZE-A、12/3。但实际输出的是ZE,ZE-A而已。提前非常感谢您!:)
【问题讨论】:
抛出什么错误? 【参考方案1】:试试这个,你的问题出在 get_where() 所以,我删除它并重写它
public function get_news_by_id($Id = 0)
if ($Id === 0)
$query = $this->db->get('WellDataA');
return $query->result_array();
$this->db->select('a.Id,a.Platform,a.WellName,b.Id,b.CompleteDate');
$this->db->from('WellDataA a');
$this->db->join('WellDataB b','a.WellName = b.WellName','INNER'); //changes
$this->db->where('b.Id',$Id); //changes
$query = $this->db->get();
if ($query->num_rows() > 0)
return $query->row_array();
else
return array();
【讨论】:
get_where()
和 join()
没有问题。这两个功能可以一起工作
它不会给出任何错误但它会给他一个空白屏幕,所以我说一个问题
非常感谢先生!此代码适用于我的项目
不客气@aineivyar,请接受答案【参考方案2】:
如果我的解决方案不是一个好的解决方案,我很抱歉, 但我建议您将表格的结构更改为:
WellDataA:
Id Platform WellDataB
.
.
4 ZE 1
5 ZE 2
6 ZE 3
.
.
WellDataB:
Id WellName CompleteDate
1 ZE-A 12/3
2 ZE-B 14/5
3 ZE-C 20/6
由于我假设使用的模型是关系模型,所以必须首先实现的一件事是使表都具有关系。而不是将 WellDataA 和 WellDataB 与 WellDataA 内部的 WellDataB 中的 Id 连接起来。
【讨论】:
我也尝试使用您的概念并更改我的一些代码。它有助于!谢谢!【参考方案3】:我认为您只需要删除一些代码。试试这段代码
public function get_news_by_id($Id = 0)
if ($Id === 0)
$query = $this->db->get('WellDataA');
return $query->result_array();
$this->db->join('WellDataB','WellDataA.WellName =
WellDataB.WellName','INNER');
$query = $this->db->get_where('WellDataA', array('Id' => $Id));
return $query->row_array();
【讨论】:
感谢您抽出宝贵时间!我已经弄清楚了代码:)以上是关于如何在 CodeIgniter 中使用 JOIN 和 get_where 子句的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 join codeigniter 从另一个表中获取值
SQL Join 在两个表上的 Codeigniter 中?