首页 > 解决方案 > 如何在 CodeIgniter 中使用 JOIN 和 get_where 子句

问题描述

在通过发送 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而已。提前非常感谢你!:)

标签: sqlcodeigniterphpmyadmin

解决方案


首先,如果我的解决方案不是一个好的解决方案,我很抱歉,但我建议您将表格的结构更改为:

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 连接起来。


推荐阅读