Take a value out of the Codeigniter query

1

I could not use the result thrown by a query of a model in Codeigniter as a parameter to be able to execute another query that requires the above information.

Code of the model :

public function datosuser($codigo){
    $this->db->select('*');
    $this->db->where('codigo',$codigo);
    $resultado= $this->db->get('usuarios');
    return $resultado->result();
}

public function segundoautor($codigo2){
    $this->db->select('*');
    $this->db->where('codigo',$codigo2);
    $resss= $this->db->get('usuarios');
    return $resss->result();
} 

and this is the driver :

$sesion = $this->session->userdata('codigo');        
    if($sesion){  
        //cargando datos
        $datosu['usuarios'] = $this->principal_model->datosuser($sesion);
        $datosu['documentos'] = $this->principal_model->consultandodocumentos($sesion);

        foreach ($documentos as $documents){                 
            $datosu['datosa2'] = $this->principal_model->segundoautor($documents->codigouser2;)
        }

        $datosu['integrantes'] = $this->principal_model->usuarios(); 
        //views
        $this->load->view('paginaprincipal', $datosu);
        $this->load->view('contenido/contenedor1',$datosu);
        $this->load->view('contenido/contenedor2',$datosu);
        $this->load->view('contenido/contenedor3',$datosu);
        $this->load->view('contenido/contenedor4',$datosu);
        $this->load->view('contenido/contenedor5',$datosu);
        $this->load->view('contenido/contenedor6',$datosu);
        $this->load->view('contenido/contenedor7',$datosu);
        $this->load->view('contenido/contenedor8',$datosu);
        $this->load->view('contenido/contenedor9',$datosu);
        $this->load->view('contenido/contenedor10',$datosu);
        $this->load->view('contenido/contenedor11',$datosu);
        $this->load->view('contenido/contenedor12',$datosu);
        $this->load->view('contenido/contenedor13',$datosu);
        $this->load->view('contenido/contenedor14',$datosu);
    }
    
asked by Mateo Nieto 11.02.2018 в 04:57
source

2 answers

1

The problem is this line of code, which has the ";" where it does not go:

foreach ($documentos as $documents){                 
            $datosu['datosa2'] = $this->principal_model->segundoautor($documents->codigouser2;) // el ; está mal ubicado
        }

Replace with the following code:

foreach ($documentos as $documents){                 
                $datosu['datosa2'] = $this->principal_model->segundoautor($documents->codigouser2); // el ; está mal ubicado
            }

Update: Based on your comment in my answer you could try the following:

Use the following code in your model

public function datosuser($codigo){
    $this->db->select('*');
    $this->db->where('codigo',$codigo);
    $resultado= $this->db->get('usuarios');
    return $resultado->result_array(); /* Para obtener un arreglo en vez de un objeto */
}

public function segundoautor($codigo2){
    $this->db->select('*');
    $this->db->where('codigo',$codigo2);
    $resss= $this->db->get('usuarios');
    return $resss->result_array(); /* Para obtener un arreglo en vez de un objeto */
} 

and in your driver the following code:

$sesion = $this->session->userdata('codigo');        
    if($sesion){  
        //cargando datos
        $datosu['usuarios'] = $this->principal_model->datosuser($sesion);
        $datosu['documentos'] = $this->principal_model->consultandodocumentos($sesion);

    foreach ($documentos as $row =>$documents){ /* Así se tiene cada valor de un arreglo sencillo */  
        $codigouser2=$documents['codigouser2']; /* Obtenemos lo que se va a pasar como parametro al segundo foreach */              
        $datosu['datosa2'] = $this->principal_model->segundoautor($codigouser2); /* Aplicamos el foreach con el parametro simple */
    }

    $datosu['integrantes'] = $this->principal_model->usuarios(); 
    //views
    $this->load->view('paginaprincipal', $datosu);
    $this->load->view('contenido/contenedor1',$datosu);
    $this->load->view('contenido/contenedor2',$datosu);
    $this->load->view('contenido/contenedor3',$datosu);
    $this->load->view('contenido/contenedor4',$datosu);
    $this->load->view('contenido/contenedor5',$datosu);
    $this->load->view('contenido/contenedor6',$datosu);
    $this->load->view('contenido/contenedor7',$datosu);
    $this->load->view('contenido/contenedor8',$datosu);
    $this->load->view('contenido/contenedor9',$datosu);
    $this->load->view('contenido/contenedor10',$datosu);
    $this->load->view('contenido/contenedor11',$datosu);
    $this->load->view('contenido/contenedor12',$datosu);
    $this->load->view('contenido/contenedor13',$datosu);
    $this->load->view('contenido/contenedor14',$datosu);
}

Observation: The lines that I made the change comment them to the side with the explanation so you know what I did.

That's all, I hope it's useful for you. A greeting.

    
answered by 11.02.2018 / 16:19
source
0

If you need to extract a single value, you must modify the model so that it only gives you the desired value, example:

$this->db->select('*');
$this->db->from('table1');
$this->db->where('campo','valor');
$query1 = $this->db->get();
$row_query1 = $query1->row_array();  //Aquí tomamos todo el registro de la consulta

//Lo usas en otra consulta
$this->db->select('*');
$this->db->from('table2');
$this->db->where('campo2',$row_query1['ID']);
.
.
.
//O tambien retornas directo
return $row_query1['ID'];

Where the index "ID" you must put the name of the field of the database, or instead of making a "select *", you make a "select ID"

    
answered by 15.08.2018 в 19:52