Codeigniter:将结果查询到关联数组中

时间:2016-03-18 04:04:34

标签: php mysql arrays codeigniter

我在数据库中有两个表

1.main_category字段(id,main_name);

2.sub_category字段(id,main_id,sub_name)

这里main_id用于连接两个表,我希望得到如下数组的结果

Array
(
    [CCTV] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [main_id] => 4
                    [name] => first
                )

            [1] => Array
                (
                    [id] => 3
                    [main_id] => 4
                    [name] => second
                )

            [2] => Array
                (
                    [id] => 4
                    [main_id] => 4
                    [name] => second
                )

        )

    [Security Camera] => Array
        (
            [0] => Array
                (
                    [id] => 5
                    [main_id] => 5
                    [name] => first
                )

            [1] => Array
                (
                    [id] => 6
                    [main_id] => 5
                    [name] => second
                )

            [2] => Array
                (
                    [id] => 7
                    [main_id] => 5
                    [name] => second
                )

        )

)

此处数组的keymain_name字段,来自main_category表,每个键的关联数组包含与条件匹配的

where main_category.id=sub_category.main_id

我希望db query能够实现上述结果。是否可以使用连接查询?

3 个答案:

答案 0 :(得分:1)

这是连接查询的结构,您可以根据自己的要求更改它。

function myfun($id){
  $query = "select main_cat.*, sub_cat.* from main_category main_cat
  Join sub_category sub_cat 
  ON main_cat.id = sub_cat.main_id
  where main_cat.id = $id";
  $data = $this->db->query($query);
  return $data->result_array();
}

希望这会对你有所帮助。

答案 1 :(得分:0)

尝试理解查询并根据需要进行更改.main_cat作为表1,sub_category作为表2。你已经给出了半解决方案sub_category.employee_id = main_cat.employee_id

  $this->db->select("main_cat.id,main_cat.main_id,main_cat.name,sub_category.id,sub_category.main_id,sub_category.sub_name");
  $this->db->from('main_cat');
  $this->db->join('sub_category', 'sub_category.employee_id = main_cat.employee_id');
  $this->db->where('id', $id);
  $query = $this->db->get();
  return $query->result();

答案 2 :(得分:0)

你好你使用codeignitor所以使用codeignitor mysql查询结构这是将来的最佳实践

$this->db->select("main_cat.id,main_cat.main_id,main_cat.name,sub_category.id,sub_category.main_id,sub_category.sub_name");
  $this->db->from('main_cat');
  $this->db->join_using('sub_category', 'employee_id');
  $this->db->where(tablename.'id', $id);
  $query = $this->db->get();
  return $query->result();

employee_id在两个表中都很常见,因此请使用join_using,否则您可以像这样使用join

$this->db->join('sub_category', 'sub_category.employee_id = main_cat.employee_id');
相关问题