sql >> Base de Datos >  >> RDS >> Mysql

ActiveRecord where_in() con matriz

La matriz que intenta pasar es una matriz multidimensional. En su lugar, intente esto:

$ids = array();
foreach ($query->result_array() as $id)
    {
        $ids[] = $id['id'];
    }

$this->db->where_in('id', $ids);

No puede aplanar la consulta->result_array() sin iteración. Pero si necesita manejar mucho este tipo de consultas en su aplicación, y si tiene>=PHP 5.3 instalado, puede poner la siguiente función en un archivo de ayuda de Codeigniter (o en algún otro lugar adecuado) para ayudarlo a aplanar matrices:

function flatten(array $array) {
    $return = array();
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
    return $return;
}

Y en tu caso utilízalo así:

    $ids = flatten($query->result_array());
    $this->db->where_in('id', $ids);