Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在codeigniter中从bd生成多维结果_Php_Database_Codeigniter_Multidimensional Array - Fatal编程技术网

Php 如何在codeigniter中从bd生成多维结果

Php 如何在codeigniter中从bd生成多维结果,php,database,codeigniter,multidimensional-array,Php,Database,Codeigniter,Multidimensional Array,我对数组有一个很大的问题,我对它们几乎没有经验 我有3个表(材料、供应商和第三个表,与id相关) 我需要的是获取每种材料的数据和供应商列表 $this->db->select('m.id as id_material,m.nombre as detalle'); $this->db->from('materiales as m'); $res = $this->db->get(); $result =array(); $prov

我对数组有一个很大的问题,我对它们几乎没有经验

我有3个表(材料、供应商和第三个表,与id相关)

我需要的是获取每种材料的数据和供应商列表

$this->db->select('m.id as id_material,m.nombre as detalle');
    $this->db->from('materiales as m');
    $res = $this->db->get();
    $result =array();
    $prov=array();

    foreach($res->result_array() as $key){
        $result[$key["detalle"]]=$key["detalle"];

        $this->db->select("m.id as idm,m.nombre as nom,p.nombre_comercial as prov_nom");
        $this->db->from('materiales as m');
        $this->db->join('materiales_proveedores as mp', 'm.id = mp.id_material', 'inner');
        $this->db->join('proveedores as p', 'p.id = mp.id_proveedor', 'inner');
        $res2 = $this->db->get();

            foreach($res2->result_array() as $key2){
                $result["proveedores"][$key2["prov_nom"]]=$key2["prov_nom"];

            }

    }

    return $result;
通过此查询,我得到以下结果:


这是错误的,因为它向我显示了所有供应商,而不是每个材料对应的供应商,有任何帮助吗?

您可以使用SQL join或codeigniter活动记录集轻松完成此操作,请参见链接
https://ellislab.com/codeigniter/user-guide/database/active_record.html
我正在使用连接,问题不在于如何构建阵列
        $this->db->select("m.id as idm,m.nombre as nom,**distinct** p.nombre_comercial as prov_nom");
    $this->db->from('materiales as m');
    $this->db->join('materiales_proveedores as mp', 'm.id = mp.id_material', 'inner');
    $this->db->join('proveedores as p', 'p.id = mp.id_proveedor', 'inner');
    $res2 = $this->db->get();

        foreach($res2->result_array() as $key2){
            $result["proveedores"][$key2["prov_nom"]]=$key2["prov_nom"];

        }