Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ActiveRecord where_in() com array


A matriz que você tenta passar é uma matriz multidimensional. Em vez disso, tente isso:
$ids = array();
foreach ($query->result_array() as $id)
    {
        $ids[] = $id['id'];
    }

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

Você não pode achatar a query->result_array() sem iteração. Mas se você precisar lidar muito com esse tipo de consulta em seu aplicativo, e se tiver>=PHP 5.3 instalado, você pode colocar a seguinte função em um arquivo auxiliar do Codeigniter (ou em outro lugar adequado) para ajudá-lo a nivelar arrays:
function flatten(array $array) {
    $return = array();
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
    return $return;
}

E no seu caso use assim:
    $ids = flatten($query->result_array());
    $this->db->where_in('id', $ids);