Foros del Web » Programando para Internet » PHP »

Problema al hacer consulta padre - hija usando Codeigniter

Estas en el tema de Problema al hacer consulta padre - hija usando Codeigniter en el foro de PHP en Foros del Web. Hace unos dias estoy empezando a usar Codeigniter, y mi reto fue hacer un proyecto con ese framework y lo estoy haciendo, pero me choque ...
  #1 (permalink)  
Antiguo 26/04/2013, 00:22
 
Fecha de Ingreso: noviembre-2012
Ubicación: Villa Maria, Peru
Mensajes: 46
Antigüedad: 11 años, 5 meses
Puntos: 0
Problema al hacer consulta padre - hija usando Codeigniter

Hace unos dias estoy empezando a usar Codeigniter, y mi reto fue hacer un proyecto con ese framework y lo estoy haciendo, pero me choque con un "muro"
Como hacer una consulta hija que dependa de otra consulta padre
lo que facilmente hacia cuando programaba con PHP puro era algo asi:
Código PHP:
//select....
//recorro select
foreach($datospadre as $datop)
{
  
//asigno a la variable
  
$ID $dato['iddato']
  
//otros datos
....
....
   
       
"select * mitabla
        where idtabla = '$ID' "
   
//este foreach esta dentro del otro
 
foreach($datoshijo as $datoh)
     {
        
//printeo datos
      
}

Con esto, mi consulta hija depende del ID que bote mi consulta padre,
pero con Codeigniter se me complica, lo hago de esta manera:


Código PHP:
public function cargar_detallelote()
{
    
$estado '1';
    
$this->db->select('idlote, fecha_compra, monto_total');
    
$this->db->from('lote');
    
$this->db->where('estado_lote'$estado);
    
$this->db->order_by('fecha_compra'"desc"); 
    
$query $this->db->get();

    
$listarlote $query->result_array();

    
//return $listarlote->result_array();
    
$lote $listarlote['idlote'];

    foreach (
$lote as $key => $value) {

    
$this->db->select('idlote, fecha_compra, monto_total, insumo_idinsumo, lote_idlote, onza, costo, descripcionin');
    
$this->db->from('lote');
    
$this->db->join('insumo_has_lote''insumo_has_lote.lote_idlote = lote.idlote');
    
$this->db->join('insumo''insumo_has_lote.insumo_idinsumo = insumo.idinsumo');
            
$this->db->where('lote_idlote'$lote[$key]);
            
$listardetallelote $this->db->get();

            return 
$listardetallelote->result_array();
    }

No se si ese sea el camino correcto
Lo primero que hago es cargar la tabla lote y quiero obtener todos los 'idlote' de esa tabla
y despues asignarle una variable(
Código PHP:
$lote $listarlote['idlote']; 
)
pero me sale error en esa linea:
Código PHP:
$lote $listarlote['idlote']; 
el index 'idlote' no me lo reconoce, y no se porque :/

Pero mi intencion era q una vez asignada esa variable,
la pasara por un bucle foreach, y dentro de ese bucle colocar la consulta a la tabla insumo_has_lote, cosa que se EJECUTE POR CADA LOTE QUE HAYA.
Alguna ayuda Please... no se que estoy haciendo mal :/
  #2 (permalink)  
Antiguo 26/04/2013, 01:22
 
Fecha de Ingreso: noviembre-2012
Ubicación: Villa Maria, Peru
Mensajes: 46
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema al hacer consulta padre - hija usando Codeigniter

Ahora haciendo un cambio en el codigo,
ya me muestra el resultado en la vista, pero en cada lote me muestra todos los detalles de ultimo lote, y suena logico porque el bucle se recorre aqui, en el modelo y siempre al final me botara el ultimo dato, pero como hacer que por cada recorrido me pinte en la vista el resultado.
Código PHP:
    public function cargar_detallelote()
    {
            
$estado '1';
            
$this->db->select('idlote, fecha_compra, monto_total');
            
$this->db->from('lote');
            
$this->db->where('estado_lote'$estado);
            
$this->db->order_by('fecha_compra'"desc"); 
            
$query $this->db->get();

            
$listarlote $query->result_array();

            
//return $listarlote->result_array();
            //$data["clave"] = "valor";
            //$lote[] = $listarlote['idlote'];
            
foreach ($listarlote as $key ) {

            
$this->db->select('idlote, fecha_compra, monto_total, insumo_idinsumo, lote_idlote, onza, costo, descripcionin');
            
$this->db->from('lote');
            
$this->db->join('insumo_has_lote''insumo_has_lote.lote_idlote = lote.idlote');
            
$this->db->join('insumo''insumo_has_lote.insumo_idinsumo = insumo.idinsumo');
            
$this->db->where('lote_idlote'$key['idlote']);
            
$listardetallelote $this->db->get();

            return 
$listardetallelote->result_array();
        }
        
    } 
  #3 (permalink)  
Antiguo 26/04/2013, 07:25
 
Fecha de Ingreso: abril-2013
Mensajes: 32
Antigüedad: 11 años
Puntos: 5
Respuesta: Problema al hacer consulta padre - hija usando Codeigniter

Hace años que deje de usar el active record de codeigniter en favor de doctrine. Pero si algo me gusta de CI es que si no te gusta la forma en que el framework o alguna de sus librerias maneja las cosas podes reemplazar facilmente por tu propia libreria (o hacerlo a mano a la forma tradicional de php).

El valor de aprender un framework no reside en conocer una feature a fondo (en este caso el active record) sino tener una estructura que te permita tener el codigo bien organizado. Las librerias son un agregado. Lo importante es que entiendas bien el patron MVC.

Tranquilamente podes hacer tu consulta a la manera tradicional desde un modelo,

$query = $this->db->query($sql);

espero haber sido de ayuda

Etiquetas: codeigniter
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:20.