我尝试从多个表中查询来从codeigniter中使用活动记录类

时间:2016-05-10 17:27:17

标签: php mysql codeigniter

我尝试获取来自mysql查询的数据以便以后使用它。如果我必须在带有join子句的表中输出数据,我不在乎。我只需要从中得到一个特殊的部分。但我希望获得所有相关或相互关联的内容。

这是使用带有php

的codeigniter MVC框架

example database with tables

我希望能够通过一个查询访问每个表中的数据

function get_reg(){
    $this->db->select('*');
    $this->db->from('
                        tableA.*,
                        tableB.*,
                        tableC.*,
                        tableD.*
                    ');
    $this->db->where('tableA.name = tableB.name');
    $this->db->where('tableC.name = tableD.name');
    $this->db->where('tableA.name = tableD.name');
    $this->db->where('tableC.name = tableB.name');
    $query = $this->db->get();
    return $query->result_array();
}

这样的事情就这样被访问:

$ this-> load_model-> get_reg()//得到我想要的东西

我不知道这是否可行。

1 个答案:

答案 0 :(得分:0)

要在单个查询中执行此操作,您需要使用JOIN语法。

你的答案看起来像

$this->db->from('tableA');
$this->db->join('tableB', 'tableA.name = tableB.name', 'LEFT'); // the type of join depends on the behavior you want
$this->db->join('tableC', 'tableA.name = tableC.name', 'LEFT');
$this->db->join('tableD', 'tableA.name = tableD.name', 'LEFT');
$query = $this->db->get();

上面根据名称将所有表连接在一起,在所有表中看起来都是相同的。当连接表的某些行没有名称值时,连接类型很重要。

您可以在docs

中阅读更多内容