如何在codeigniter中访问从查询传递的数据

时间:2016-05-11 10:50:30

标签: php html mysql codeigniter

如何获取应从此查询传回的数据。这是在我的模型中。我不知道我是否正确行事,因为我还没有收到任何输出。我已经在phpmyadmin中测试了查询,它可以工作。我需要能够成功地将数据从function get_reg2()传递到我的控制器。

我不知道回报是否正确

return $this->db->query($query, $data); 

Joins_model extends CI_Model....
function get_reg2($data){
$query = ('

SELECT DISTINCT
    cm_valuacion.mano_obra,
    cm_nomina.nomina,
    cm_empleado.nombre,
    cm_proveedor.nombre,
    cm_valuacion.hojalateria,
    cm_valuacion.pintura,
    cm_valuacion.mecanica,
    cm_valuacion.refaccion,
    cm_valuacion.tipo,
    cm_valuacion.shojalateria,
    cm_valuacion.spintura,
    cm_valuacion.smecanica,
    cm_valuacion.costoHojalateria,
    cm_valuacion.costoPintura,
    cm_valuacion.costoMecanica,
    cm_valuacion.pv_hojalateria,
    cm_valuacion.pv_pintura,
    cm_valuacion.pv_mecanica,
    cm_valuacion.pc_hojalateria,
    cm_valuacion.pc_pintura,
    cm_valuacion.pc_mecanica,
    cm_compras.precio,
    cm_compras.status
FROM cm_valuacionr,
    cm_nomina
INNER JOIN cm_empleado
    ON cm_nomina.id_empleado = cm_empleado.id
INNER JOIN cm_valuacion
    ON cm_valuacion.id_siniestro = cm_nomina.id_siniestro
INNER JOIN cm_compras
    ON cm_compras.id_siniestro = cm_valuacion.id_siniestro
INNER JOIN cm_proveedor
    ON cm_compras.id_proveedor = cm_proveedor.id
WHERE cm_valuacion.id_siniestro = ?
    AND cm_valuacion.id_complemento = 0
GROUP BY mano_obra
    ');
return $this->db->query($query, $data);

}

}

我也不知道我是否在这里正确接收

 $registros = $this->joins_model->get_reg2($id);

我在控制器中拥有的是:

$registros = $this->joins_model->get_reg2($id);
    $this->load->library('table');
    $this->table->set_empty(" ");
    $this->table->set_heading(
        $this->st_cell('D'),
        $this->st_cell('CANT.'),
        $this->st_cell('PROVEEDOR'),
        $this->st_cell('NOTA'),
        $this->st_cell('DESCRIPCION'),
        $this->st_cell('COSTO'),
        $this->st_cell('VENTA'),
        $this->st_cell('EMPLEADO'),
        $this->st_cell('NOMINA'),
        $this->st_cell('TOTAL')
    );

    foreach ($registros->result() as $registro){
        //this is where I want to be able to specify what parameter I want               
        //to access from the query that was returned. How do I do this?
        //for example theres *nombre* up there and it's there twice. Once
        //for *empleado* and the other for *proveedor*
    }

并在此处正确使用;

$registros->result() as $registro

1 个答案:

答案 0 :(得分:1)

假设

  
      
  1. 在模型get_reg2($id)中,我假设数据正在接收。
  2.   
  3. 您的SQL代码运行正常。
  4.   

<强>更改

  
      
  1. 模型代码已修改,返回目标数组。
  2.   
  3. 控制器功能已更改。
  4.   
  5. 表标题已修改。
  6.   
  7. foreach循环指向要呈现的数据。
  8.   

<强>冷藏

  1. HTML Table Class in Codeigniter
  2. 试试这个

    在模型中

    function get_reg2($id)
    {
        $query = ('
            SELECT DISTINCT
                cm_valuacion.mano_obra,
                cm_nomina.nomina,
                cm_empleado.nombre,
                cm_proveedor.nombre,
                cm_valuacion.hojalateria,
                cm_valuacion.pintura,
                cm_valuacion.mecanica,
                cm_valuacion.refaccion,
                cm_valuacion.tipo,
                cm_valuacion.shojalateria,
                cm_valuacion.spintura,
                cm_valuacion.smecanica,
                cm_valuacion.costoHojalateria,
                cm_valuacion.costoPintura,
                cm_valuacion.costoMecanica,
                cm_valuacion.pv_hojalateria,
                cm_valuacion.pv_pintura,
                cm_valuacion.pv_mecanica,
                cm_valuacion.pc_hojalateria,
                cm_valuacion.pc_pintura,
                cm_valuacion.pc_mecanica,
                cm_compras.precio,
                cm_compras.status
            FROM cm_valuacionr,
                cm_nomina
            INNER JOIN cm_empleado
                ON cm_nomina.id_empleado = cm_empleado.id
            INNER JOIN cm_valuacion
                ON cm_valuacion.id_siniestro = cm_nomina.id_siniestro
            INNER JOIN cm_compras
                ON cm_compras.id_siniestro = cm_valuacion.id_siniestro
            INNER JOIN cm_proveedor
                ON cm_compras.id_proveedor = cm_proveedor.id
            WHERE cm_valuacion.id_siniestro = ?
                AND cm_valuacion.id_complemento = 0
            GROUP BY mano_obra
                ');
            $query =  $this->db->query($query, $id); # Changed
            $result = $query->result_array(); # Added
            return $result; # Added
        }
    }
    

    在控制器中

    $registros = $this->joins_model->get_reg3($id);
    //var_dump($registros);
    //print_r($registros);
    if (empty($registros))
    {
        echo "No data recived from Database";
    }else{
    
        ?>
        <table border="2px">
        <tr>
            <th>D</th>
            <th>Cant</th>
        </tr>
            <?php
            foreach ($registros as $registro)
            {
                ?>
                <tr>
                <td><?php echo $registro['mano_obra'] ?></td> 
                <td><?php echo $registro['nomina'] ?></td> 
                </tr>
            <?php
            }
            ?>
        </table>
    
        <?php
    }