Mysql
 sql >> Database >  >> RDS >> Mysql

ActiveRecord where_in() con array

L'array che si tenta di passare è un array multidimensionale. Invece prova questo:

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

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

Non puoi appiattire la query->result_array() senza iterazione. Ma se hai bisogno di gestire molto questo tipo di query nella tua applicazione e se hai installato>=PHP 5.3, puoi inserire la seguente funzione in un file helper Codeigniter (o in un altro posto adatto) per aiutarti a convertire gli array:

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

E nel tuo caso usalo così:

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